W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
數(shù)據(jù)屬性具有兩個附加屬性。
[[Value]]保存屬性值。
在對象上創(chuàng)建屬性時,會自動填充此屬性。
所有屬性值都存儲在[[Value]]中,即使該值是一個函數(shù)。
[[Writable]]屬性是一個布爾值,指示該屬性是否可以寫入。
默認情況下,除非另行指定,否則所有屬性都是可寫的。
使用這兩個附加屬性,可以完全定義數(shù)據(jù)屬性使用Object.defineProperty()。
考慮這個代碼:
var book1 = {
name : "Javascript"
};
我們已經(jīng)看到了上面的代碼,并添加了 name
屬性設(shè)置為book1并設(shè)置其值。
我們可以使用以下代碼實現(xiàn)相同的結(jié)果:
var book1 = {};
Object.defineProperty(book1, "name", {
value : "Javascript",
enumerable : true,
configurable : true,
writable : true
});
當使用Object.defineProperty()定義一個新屬性時,它“重要的是指定所有的屬性,因為布爾屬性否則自動默認為false。
以下代碼創(chuàng)建不可枚舉,不可配置的name屬性不可寫因為它不會在調(diào)用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"
上面的代碼生成以下結(jié)果。
上面的代碼生成以下結(jié)果。...
在非嚴格模式下,操作會靜默失敗。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: