Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript类方法封装问题_Javascript - Fatal编程技术网

javascript类方法封装问题

javascript类方法封装问题,javascript,Javascript,我对javascript非常陌生,我认为这是一个愚蠢的问题,但我不知道如何在谷歌上搜索我的问题 我有一个这样的“类”: function Myclass(){} Myclass.prototype.method1() = function(){ whatever.onload = function(){ this.method2(); } }; Myclass.prototype.method2() = function(){}; 我的问题是“这”和我的课无

我对javascript非常陌生,我认为这是一个愚蠢的问题,但我不知道如何在谷歌上搜索我的问题

我有一个这样的“类”:

function Myclass(){}

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

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

};

Myclass.prototype.method2() = function(){};
我的问题是“这”和我的课无关了。在这个匿名函数作用域中,我无法访问我的method2

我如何解决这个问题


谢谢你的建议。

最简单的方法是:

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

即使在
method1
完成执行后,变量
self
仍然存在,这样用
method1
声明的onload函数以后仍然可以访问它。(有关这方面的更多信息,请使用谷歌“JavaScript闭包”。

最简单的方法如下:

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

即使在
method1
完成执行后,变量
self
仍然存在,这样用
method1
声明的onload函数以后仍然可以访问它。(有关这方面的更多信息,请使用谷歌“JavaScript闭包”。

我将查看此内容。非常感谢,这解决了我的问题!我想你在第一行代码中的意思是
Myclass.prototype.method1=function(){
。看起来像是打字错误。@Reno-Yep。我直接从问题中复制了那一行,没有注意到问题。修复了。我会检查这个。非常感谢,这解决了我的问题!我想你的意思是
Myclass.prototype.method1=function()){
在您的第一行代码中。看起来像是打字错误。@Reno-yes。我直接从问题中复制了这一行,没有注意到问题。已修复。