3 回答

TA貢獻1906條經驗 獲得超3個贊
當函數被調用時,“this”指的是行。如果你想擁有這個對象,你可以這樣做:]
AddChildRowEvents: function(row, p2) {
var theObj = this;
if(document.attachEvent) {
row.attachEvent('onclick', function(){theObj.DoSomething();});
} else {
row.addEventListener('click', function(){theObj.DoSomething();}, false);
}
},
調用該函數時,它可以訪問定義函數時在范圍內的變量theobj。

TA貢獻1880條經驗 獲得超4個贊
this總是指內部函數,如果你有嵌套函數,你必須創建另一個變量并指向它this。
var myObject = {
AddChildRowEvents: function(row, p2) {
var that = this;
if(document.attachEvent) {
row.attachEvent('onclick', function(){that.DoSomething();});
} else {
row.addEventListener('click', function(){that.DoSomething();}, false);
}
}
}

TA貢獻2021條經驗 獲得超8個贊
這是閉包的常見問題。要解決它嘗試這樣的事情:
var myObject = {
AddChildRowEvents: function(row, p2) {
var self = this;
if(document.attachEvent) {
row.attachEvent('onclick', function(){this.DoSomething(self);});
} else {
row.addEventListener('click', function(){this.DoSomething(self);}, false);
}
},
DoSomething: function(self) {
self.SomethingElse();
}
}
添加回答
舉報