我有一個定義了「類」的類,並且只創建了它的一個實例。該實例擁有一個最終會被傳遞的成員函數(這是一個鼠標處理程序,但這不重要)。由於我只會創建我的「類」的一個實例,因此我決定使用對象字面值將其重寫爲單例。當傳遞一個對象的成員函數時綁定「this」
所以我
var mySingleton = {
theObjects : [];
}
mySingleton.mouseHandler = (function() {
var that = this;
return function (e) {
for (var indx = 0; indx < that.theObjects.length; indx++) {
// do something to that.theObjects[indx];
}
}
}());
mySingleton.addObject = function(newObj) {
this.theObjects.push(newObj);
}
然而,當我嘗試使用此代碼(增加了一些對象後),我不斷收到that.theObjects是未定義的錯誤。它是指for循環中的行。
line'var mySingleton = {theObjects = []; }'應該是'var mySingleton = {theObjects:[]}'。不知道這個問題雖然 –
你只是寫了兩次相同的事情... – fletom
哦,對不起,我在我的計算器問題中犯了一個錯字。這在我的代碼中確實是冒號,所以這不是問題。我會相應地編輯我的帖子。 – achow