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后就会有限制。
原文地址:https://www.cnblogs.com/snowinmay/p/3066522.html