我已經實現each
功能像這樣的JS:實現每個vanila JS類似的jQuery
Object.prototype.each = function(fn){
for (var x in this){
if (this.hasOwnProperty(x)){
fn(x);
}
}
return this;
};
var o = {'a' : 'apple', 'b' : 'bat', 'c' : 'cat'};
o.each(function(i){
alert(i);
});
雖然這工作得很好。它有什麼問題嗎?詢問是因爲我在學習JS。
而且它爲什麼會產生錯誤,如果我做的:
{'a' : 'apple', 'b' : 'bat', 'c' : 'cat'}.each(function(i){
alert(i);
});
我的每個實現都可以通過它的方式或任何錯誤嗎? – Dev555 2012-01-30 19:57:51
@ Dev555我認爲如果你這樣做了:'fn.call(this,x,this [x])'而不是'fn(x)',它可能會更有用。否則,我沒有看到任何明顯的錯誤。 – 2012-01-30 20:15:44
@ Dev555您還應該閱讀https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/defineProperty,以便您可以瞭解如何定義非枚舉屬性,以便您的方法不會以'for在'循環中。 – 2012-01-30 20:25:09