Property 特性
2018-06-16 15:02 更新
本规范中的特性(Attributes)用于定义和解释命名属性(properties)的状态。命名的数据属性由一个名字关联到一个下表中列出的特性 (attributes)
表5——命名的数据属性的特性特性名称 | 取值范围 | 描述 |
---|---|---|
[[Value]] | 任何 ECMAScript 语言类型 | 通过读 property 来取到该值 |
[[Writable]] | Boolean | 如果为 false,试图通过 ECMAScript 代码 [[Put]] 去改变该属性的 [[Value]],将会失败 |
[[Enumerable]] | Boolean | 如果为 true,则该属性可被 for-in 枚举出来(参见 12.6.4),否则,该属性不可枚举。 |
[[Configurable]] | Boolean | 如果为 false,试图删除该属性,改变该属性为访问器属性,或改变它的 attributes(和 [[Value]] 不同),都会失败。 |
命名的访问器属性由一个名字关联到一个下表中列出的特性 (attributes)
特性名称 | 取值范围 | 描述 |
---|---|---|
[[Get]] | Object 或 Undefined | 如果该值为一个 Object 对象,那么它必须是一个函数对象。每次有对该属性进行 get 访问时,该函数的内部方法 [[Call]](8.6.2)会被一个空参数列表调用,以返回该属性值 |
[[Set]] | Object 或 Undefined | 如果该值为一个 Object 对象,那么它必须是一个函数对象。每次有对该属性进行 set 访问时,该函数的内部方法 [[Call]](8.6.2)会被一个参数列表调用,这个参数列表包含分配的值作为唯一的参数。property 的内部方法 [[Set]] 产生的影响可能会,但不是必须的,对随后的 property 内部方法 [[Get]] 的调用返回结果产生影响。 |
[[Enumerable]] | Boolean | 如果为 true,则该属性可被 for-in 枚举出来(参见 12.6.4),否则,该属性不可枚举。 |
[[Configurable]] | Boolean | 如果为 false,试图删除该属性,改变该属性为访问器属性,或改变它的 attributes(和 [[Value]] 不同),都会失败。 |
如果某个命名属性的特性值没有在此规范中明确给出,那么它的默认值将使用下表的定义。
特性名称 | 默认值 |
---|---|
[[Value]] | undefined |
[[Get]] | undefined |
[[Set]] | undefined |
[[Writable]] | false |
[[Enumerable]] | false |
[[Configurable]] | false |
以上内容是否对您有帮助:
更多建议: