2013-04-01 49 views
2

什麼用Object.defineProperty的...如果我也可以更簡單地使用Object.defineProperty,有什麼用?

var myObj = {someNum: 123}; 
Object.defineProperty(myObj, "anotherNum", 
{value: 456, writable: true, enumerable: true, configurable: true}); 
alert(myObj.someNum + " " + myObj.anotherNum); 

...如果我還可以做...

var myObj = {someNum: 321}; 
myObj.anotherNum = 654; 
alert(myObj.someNum + " " + myObj.anotherNum); 

jsfiddle over here

+4

當您剛剛添加屬性時,您無法控制訪問權限。 – Pointy

+1

@Pointy:這將是一個很好的答案。 – Chuck

+1

@wubbewubbewubbe你會怎麼做'Object.defineProperty(myObj,「anotherNum」,{value:456,writable:false});'沒有'Object.defineProperty'? – apsillers

回答

5

應該是相當清楚的:使用方法.defineProperty()可以控制如何訪問屬性。當你簡單地將一個屬性添加到一個對象時,它總是可寫,可枚舉和可配置的。

.defineProperty()方法還允許您設置getter和setter函數。

相關問題