這裏有些奇怪。我已經定義了一個自定義的原型方法object
稱爲getSize
:javascript - 自定義對象原型方法在數組循環中變成索引
if (!Object.prototype.getSize) {
Object.prototype.getSize = function() {
var size = 0, key;
for (key in this) {
if (this.hasOwnProperty(key)) size++;
}
return size;
};
}
它給你的對象的大小。到目前爲止很簡單,對嗎? 此處,我會感到困惑:
var l = ["foo", "bar"]
for (var i in l) {
console.log(i);
}
結果是:
0
1
getSize
爲什麼getSize
有???
編輯 我知道,在JavaScript中數組是對象了。我的問題是爲什麼該方法轉化爲索引,而不是保留一種方法。它對我沒有任何意義...
我不知道方法有一個'enumerable'定義。這非常酷,謝謝你的回答!從現在起 – yuvi 2014-09-29 08:42:25
btw,Object.keys(l)''返回'['0','1']'[即使我沒有],我將使用'defineProperty'(http://jsfiddle.net/ yuvii/qwcctogs /)set'enumerable:false' - 怎麼回事? – yuvi 2014-09-29 08:46:59
@yuvi因爲'Object.keys'不使用原型鏈。所有這些東西在[MDN]上都有詳細記錄(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys)。 – 2014-09-29 08:52:48