2012-01-27 75 views

回答

10

如果您希望在遍歷所有對象屬性時能夠訪問它,則對象的屬性應該是可枚舉的。例如:

var obj = {prop1: 'val1', prop2:'val2'}; 
for (var prop in obj){ 
    console.log(prop, obj[prop]); 
} 

在這種類型的實例化,枚舉始終是真實的,這會給你的輸出:

prop1 val1 
prop2 val2 

如果你要使用的Object.create()像這樣:

obj = Object.create({}, { prop1: { value: 'val1', enumerable: true}, prop2: { value: 'val2', enumerable: false} }); 

你的for循環只能訪問prop1,而不是prop2。使用Object.create()屬性默認設置爲enumerable = false。

+0

請注意'enumerable'默認在' Object.create' – Raynos 2012-01-27 21:19:35

+0

謝謝,我指的是其他實例化。我忘了提到這一點。我將編輯我的回答 – 2012-01-27 21:25:27

+0

謝謝,爲我清除它=] – ryanve 2012-01-27 22:05:48