2012-11-14 49 views
1

有以下代碼。如何在嵌套方法內引用對象

object.waypoint=function() { 
    this.uw=setInterval(function() { 
     console.log(this); 
    }, 200); 
} 

怎麼辦我指的是「對象」三線之內的功能,我用「這個」關鍵字,但它似乎並沒有參考對象嘗試過。

回答

1

裏面setInterval this指向窗口。您需要製作一個參考this的變量。

object.waypoint=function() { 
    var me = this; 

    this.uw=setInterval(function() { 
     console.log(me); 
    }, 200); 
} 
+0

謝謝!我已經嘗試過,但沒有插入「var」關鍵字,這個工作。 :) –

+0

@ Otto-VilleLamminpää如果您發現問題的解決方案,請接受答案。 – andlrc

1

的常用方法是向this參考存儲在一個變量,你則可以用它來獲得訪問到正確的this

object.waypoint=function() { 
    // Keep a reference to this in a variable 
    var that = this; 
    that.uw=setInterval(function() { 
     // Now you can get access to this in here as well through the variable 
     console.log(that); 
    }, 200); 
} 
0

我覺得bind是一個整潔的解決方案 - 它沒有在所有瀏覽器中實現,但有workarounds

object.waypoint = function(){ 
    this.uw = setInterval(function(){ 
     console.log(this); 
    }.bind(this), 200); 
} 

MDN page爲適當的文件