JavaScript 参考类型

由 alexbro 创建,youj 最后一次修改 2017-01-06

Javascript面向对象设计 - Javascript数据属性


数据属性具有两个附加属性。

[[Value]]保存属性值。

在对象上创建属性时,会自动填充此属性。

所有属性值都存储在[[Value]]中,即使该值是一个函数。

[[Writable]]属性是一个布尔值,指示该属性是否可以写入。

默认情况下,除非另行指定,否则所有属性都是可写的。

使用这两个附加属性,可以完全定义数据属性使用Object.defineProperty()。

例子

考虑这个代码:

var book1 = { 
    name : "Javascript" 
}; 

我们已经看到了上面的代码,并添加了 name 属性设置为book1并设置其值。

我们可以使用以下代码实现相同的结果:

var book1 = {}; 

Object.defineProperty(book1, "name", { 
    value : "Javascript", 
    enumerable : true, 
    configurable : true, 
    writable : true 
}); 

当使用Object.defineProperty()定义一个新属性时,它“重要的是指定所有的属性,因为布尔属性否则自动默认为false。


注意

以下代码创建不可枚举,不可配置的name属性不可写因为它不会在调用Object.defineProperty()时显式地使任何这些属性为真。

var book1 = {}; 
Object.defineProperty(book1, "name", { 
    value : "Javascript" 
}); 

console.log("name" in book1);                      // true 
console.log(book1.propertyIsEnumerable("name"));   // false 

delete book1.name; 
console.log("name" in book1);                      // true 

book1.name = "CSS"; 
console.log(book1.name);                           // "Javascript" 

上面的代码生成以下结果。

上面的代码生成以下结果。...

在非严格模式下,操作会静默失败。



以上内容是否对您有帮助:

二维码
建议反馈
二维码