JavaScript 參考類(lèi)型

2018-01-12 19:55 更新

Javascript面向?qū)ο笤O(shè)計(jì) - Javascript數(shù)據(jù)屬性


數(shù)據(jù)屬性具有兩個(gè)附加屬性。

[[Value]]保存屬性值。

在對(duì)象上創(chuàng)建屬性時(shí),會(huì)自動(dòng)填充此屬性。

所有屬性值都存儲(chǔ)在[[Value]]中,即使該值是一個(gè)函數(shù)。

[[Writable]]屬性是一個(gè)布爾值,指示該屬性是否可以寫(xiě)入。

默認(rèn)情況下,除非另行指定,否則所有屬性都是可寫(xiě)的。

使用這兩個(gè)附加屬性,可以完全定義數(shù)據(jù)屬性使用Object.defineProperty()。

例子

考慮這個(gè)代碼:

var book1 = { 
    name : "Javascript" 
}; 

我們已經(jīng)看到了上面的代碼,并添加了 name 屬性設(shè)置為book1并設(shè)置其值。

我們可以使用以下代碼實(shí)現(xiàn)相同的結(jié)果:

var book1 = {}; 

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

當(dāng)使用Object.defineProperty()定義一個(gè)新屬性時(shí),它“重要的是指定所有的屬性,因?yàn)椴紶枌傩苑駝t自動(dòng)默認(rèn)為false。


注意

以下代碼創(chuàng)建不可枚舉,不可配置的name屬性不可寫(xiě)因?yàn)樗粫?huì)在調(diào)用Object.defineProperty()時(shí)顯式地使任何這些屬性為真。

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é)果。...

在非嚴(yán)格模式下,操作會(huì)靜默失敗。



以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)