对象
对象是数个属性无序的集合。
ECMA-262使用一些内部特性来描述属性的特征(对象的属性的特性)。
属性分为数据属性(定义属性时使用)和访问器属性(获取或设置属性值时使用):
数据属性 数据属性包含一个保存数据值的位置。值会从这个位置读取,也会写入到这个位置。数据属性有 4个特性描述它们的行为。 [[Configurable]]:表示属性是否可以通过 delete 删除并重新定义,是否可以修改它的特性,以及是否可以把它改为访问器属性。默认情况下,所有直接定义在对象上的属性的这个特性都是 true,如前面的例子所示。 [[Enumerable]]:表示属性是否可以通过 for-in 循环返回。默认情况下,所有直接定义在对象上的属性的这个特性都是 true,如前面的例子所示。 [[Writable]]:表示属性的值是否可以被修改。默认情况下,所有直接定义在对象上的属性的这个特性都是 true,如前面的例子所示。 [[Value]]:包含属性实际的值。这就是前面提到的那个读取和写入属性值的位置。这个特性的默认值为 undefined。 将属性显式添加到对象之后,[[Configurable]]、[[Enumerable]]和[[Writable]]都会被默认设置为 true,而[[Value]]特性会被设置为指定的值。 访问器属性 [[Configurable]]:表示属性是否可以通过 delete 删除并重新定义,是否可以修改它的特性,以及是否可以把它改为访问器属性。默认情况下,所有直接定义在对象上的属性的这个特性都是 true,如前面的例子所示。 [[Enumerable]]:表示属性是否可以通过 for-in 循环返回。默认情况下,所有直接定义在对象上的属性的这个特性都是 true,如前面的例子所示。 [[Get]]:获取函数,在读取属性时调用。默认值为 undefined。 [[Set]]:设置函数,在写入属性时调用。默认值为 undefined。