返回首页 - Notes - 2013

《JavaScript The Good Parts》读书笔记


语言基础

对象字面量中,如果属性名是一个合法的 JavaScript 标识符,且不是保留字,则属性名外围的引号可省略

检索对象属性,既可用 [] 语法,也可用 . 语法(前提是属性名是合法的标识符,且不是保留字)

对象通过引用传递,永远不会被复制

原型连接只在索引值的时候才会被用到,当修改原型的属性时,会立即对所有基于该原型创建的对象可见

检测对象自身拥有的属性需要使用 hasOwnProperty 方法

要尽可能地减少全局变量污染,最好每个应用只创建一个全局变量,然后将该变量作为所有其他数据的容器

函数也是对象,对象字面量连接到 Object.prototype,函数对象连接到 Function.prototype(该原型对象本身连接到 Object.prototype

每个函数在创建时会附加两个隐藏的属性:函数上下文和实现函数行为的代码。函数可以被调用,这是它们与普通对象最大的区别

函数里面也可以定义函数,子函数可以访问父函数的参数和变量

调用函数时,每个函数还会额外接收两个附加的参数:thisarguments。传递的参数与形式参数个数不匹配不会报错,多的忽略,少的设值为 undefined

函数的四种调用模式

arguments 保存所有传递给函数的参数,但 arguments 并不是一个真正的数组,而只是一个类似数组的对象,其有 length 属性,却没有任何数组的方法

函数总是会返回一个值,没有指定返回值则返回 undefined。如果函数通过 new 的方式调用,且返回值不是一个对象,则返回 this

JavaScript 没有块级作用域,只有函数作用域,而在一个函数内部任何位置定义的变量在函数内部任何地方都可见,最好在函数体的顶部声明函数中有可能用到的所有变量


date : 2013-11-19、2013-11-20