2014-10-29 63 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