我一直在尋找解決這個問題的小時數。我使用prototype.js 1.6.0.1創建了一個表格,並且在與.each函數相關的上下文中遇到了問題。這裏是一個snippit。關於prototype.js的匿名函數中的「this」的問題。每個方法
var Table = Class.create({
initialize : function(id) {
this.elmnt = $(id);
this.rows = [];
},
initRows : function() {
$A(this._elmnt.tBodies).each(function(body) {
$A(body.rows).each(function(row) {
//right here is where i would like to call
// this.rows.push(row);
console.log(this); // prints DOMWindow
});
});
}
});
正如您可以在第二個.each函數中看到的,這將解析爲DOMWindow。我希望能夠撥打this.rows.push(row)
,但我不能像「預計」那樣解決問題。
任何幫助,將不勝感激。我知道我可以做標準(我= 0;我<長度;我++)循環,但我試圖讓這個小清潔劑。感謝您提供的任何指導。
是否有一個原因,你想保持你的'表'對象的行集合?一個'HTMLTableElement'已經保存了它自己的集合。 'this.elmnt.rows'或'this.elmnt.tBodies [0] .rows'。 – user113716
https://developer.mozilla.org/zh/DOM/table.rows – user113716
這就是爲什麼我不喜歡'each()'實現覆蓋'this'的原因。爲什麼我喜歡咖啡腳本,它是非範圍介紹和非上下文強姦數組迭代。 –