javascript中数据属性的一些小结
数据属性包含一个数据值的位置。在这个位置可以读取和写入值。
属性特性:
[[Configurable]] 能不能通过delete伤处属性从而从新定义属性。true
[[Enumerable]] 能不能通过for-in来喜欢返回属性(prototype不可枚举,不能用for-in)true
[[Writable]] 能不能修改属性值 true
[[Value]] 包含这个属性的属性值 undefined
修改属性默认的特性:
Object.defineProperty()
三个参数:属性所在的对象,属性的名字,一个描述对象。
描述符:是属性特性中的一个或者多个。
小测试:
1 <script> 2 //"use strict"; 3 var dada = { 4 name : "yujianqi", 5 age : 27, 6 city : "beijing" 7 }; 8 Object.defineProperty(dada,"name",{ 9 configurable : true,//能不能通过delete伤处属性从而从新定义属性 10 writable :false,//能不能修改属性值 11 enumerable : true,//能不能通过for-in来喜欢返回属性 12 value : "dada" //包含这个属性的属性值 13 }); 14 dada.name = "prince"; 15 delete dada.name 16 for(var a in dada){ 17 alert(a) 18 } 19 //alert(dada.name); 20 </script>
注意点:
1.把configurable 属性设置为false表示不能删除属性。如果调用delete,在非严格模式下什么事都没有,但是在严格模式下会报错。
2.而且一但设置了不可配置的属性,就不能再把他变为可以配置 了、在调用Object.defineProperty() 修改除了writable之外的特性都会报错。
3.也就是说,可以在调用Object.defineProperty() 方法修改同一个属性,但在把configurable 设置为false后就会有限制。
学透前端行业所有技术,玩遍北京周边所有城市。然后我会回到那个生我养我的地方,因为有亲人的地方才是家。