2014-10-29 54 views
0

我很新的JavaScript和我認爲這是一個愚蠢的問題,但我不知道如何搜索我的問題谷歌。JavaScript類方法封裝問題

我有一個「類」這樣的:

function Myclass(){} 

Myclass.prototype.method1() = function(){ 

    whatever.onload = function(){ 
     this.method2(); 
    } 

}; 

Myclass.prototype.method2() = function(){}; 

我的問題是,「這」是不是與我的班了。在這個匿名函數範圍中,我無法達到我的方法2。

我該如何解決這個問題?

感謝您的建議。

回答

4

最簡單的方法是這樣的:

Myclass.prototype.method1 = function(){ 
    var self = this; 
    whatever.onload = function(){ 
     self.method2(); 
    } 
}; 

變量self甚至method1完成執行,使得與method1宣佈的onload功能仍然可以日後訪問後仍然存在。 (有關這方面的更多信息,請參閱google「JavaScript關閉」。)

+0

我會檢查一下。非常感謝,這解決了我的問題! – user3561383 2014-10-29 11:26:22

+0

我想你的意思是'Myclass.prototype.method1 = function(){'在你的第一行代碼中。看起來像一個錯字。 – Renaud 2015-02-05 10:00:50

+1

@Reno - 是的。我直接從問題中複製了該行,並沒有注意到問題。固定。 – nnnnnn 2015-02-05 10:08:29