JavaScript 参考类型
2018-01-12 19:55 更新
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"
上面的代码生成以下结果。
上面的代码生成以下结果。...
在非严格模式下,操作会静默失败。
以上内容是否对您有帮助:
更多建议: