讓我們創建一個新的對象:爲什麼「for-in」循環不會遍歷原型屬性?
var dict = {};
衆所周知的事實是,創建一個新的對象之後,這個新對象繼承了Object.prototype
。所以當我試圖檢查原型的屬性是否被繼承時,我做了"toString" in obj
,對此我得到了true
。但是當我想將新創建的對象的所有屬性放入一個數組中時,我會在填滿後看到數組爲空。看看下面的代碼:
var names = [];
for (var name in dict) {
names.push(name);
};
names.length;
不明白爲什麼會發生。
因爲它們不是可枚舉的。 – elclanrs 2014-11-23 19:08:41
並非所有屬性都是可枚舉的(您可以使用屬性描述符自己創建不可枚舉的屬性)。這意味着您可以通過名稱訪問它們,但不會列出它們。 – slezica 2014-11-23 19:08:43
這裏是一個證明鏈接:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...in – 2014-11-23 19:25:37