关于对象的数据属性

javascript中对象是经常用到的东西,今天我来写一些对于创建对象时,定义属性时的一些特征值。

这些特征值不能直接访问,下面举例说明。

var a={

    'name':'kasol',

    'age':18,

    'hobby':'ES'

};

在定义了这个对象之后,该对象上有一个name属性,以这样的方式被创建时,name属性上有4个特征值,分别是

[[Configurable]] ,[[Writable]] ,[[Enumerable]],  [[Value]].

[[Configurable]]表示能否配置,即能否通过delete来删除某一个属性,或者能否修改属性的特性,或者修改为访问器属性,如果为false,那么非严格模式下进行上述操作则不会有效果,严格模式下则会报错。

[[Writable]]表示能否修改属性的值,如果此项为false,那么a.name='moon'不会有效果。

[[Enumerable]]表示能否被for  in 循环枚举出来,如果此项为false,for  in 循环下不会把此属性输出。

[[Value]]表示该属性的值,读操作从这里读,写操作也会覆盖该项,默认值为undefined。

想要修改某个对象的属性的特征值,要用Object.defineProperty(obj,property,descriptor);

比如Object.defineProperty(a,'name',{writable:false,value:'moon'});

第一个参数是要更改的目标对象,第二个是要更改的属性,第三个是描述符,是一个特征值的对象。

有一点要注意,假如使用了该方法将Configurable设为false以后,就不能再对除了writable之外的特征值进行更改了,即使是Configurable=true也不行




发布了43 篇原创文章 · 获赞 18 · 访问量 5万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章