我想在正在使用的Javascript程序中使用JQuery,但遇到了范围问题。如何在此伪代码中从myfunction1调用myfunction2? (假设在某个地方创建了一个新的MyConstructor对象,并调用了myfunction1())

function MyConstructor(){...}

MyConstructor.prototype.myfunction1 = function(param) {
   $('#some_element').click(function(){
    this.myfunction2('clicked!'); //this doesn't work
  });
}

MyConstructor.prototype.myfunction2 = function(param) {

}

最佳答案

myfunction2的任何函数中,可以使用this.myfunction2()调用MyConstructor

在您的情况下,您尝试在另一个对myfunction2含义不同的函数内调用this。要访问myfunction2,您可以为thisthis.myfunction2创建一个变量,该变量在闭包范围内扩展到click的功能参数。

var self = this;
$('#some_element').click(function(){
   self.myfunction2('clicked!');
});


要么

var myfunction2 = this.myfunction2;
$('#some_element').click(function(){
   myfunction2('clicked!');
});

09-16 09:57