<u></u>Object.defineProperty
用了给对象创建一个新属性,或者修改一个已有的属性,
并返回这个对象。
Object.defineProperty(obj, prop, descriptor)
用赋值方式创建的属性,
可以被枚举(for...in
,Object.keys
),值可以被修改和删除(delete
)。
而Object.defineProperty
创建的属性,默认是不可变的(immutable)。
descriptor有两种:
数据描述符(data descriptor),访问器描述符(accessordescriptor)
它们都是普通的对象。
数据描述符和访问器描述符都有以下属性:
configurable:false
该描述符是否可以被修改,该属性是否可以被删除
enumerable:false
对象是否可以枚举到该属性
数据描述符具有以下属性:
value:属性值
writable:false
该属性的值是否可以通过赋值方式修改
访问器描述符具有以下属性:
get:undefined
<u></u>get
函数的返回值,作为属性值
如果get:undefined
或者不设置,则属性返回undefined
set:undefined
<u></u>set
函数接受一个参数,这个参数是对属性新赋的值
如果set:undefined
或者不设置,则对属性赋值将不起作用
兼容性:
Firefox 4.0(2)
Chrome 5
IE 9[1]
Opera 11.60
Safari 5.1[2]
[1] In Internet Explorer 8 only on DOM objects and with some non-standard behaviors.
[2] Also supported in Safari 5, but not on DOM objects.
网友评论