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)


表6——命名的访问器属性的特性
特性名称取值范围描述
[[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]] 不同),都会失败。

 如果某个命名属性的特性值没有在此规范中明确给出,那么它的默认值将使用下表的定义。


表7——默认特性值
特性名称默认值
[[Value]]undefined
[[Get]]undefined
[[Set]]undefined
[[Writable]]false
[[Enumerable]]false
[[Configurable]]false


以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号