我想在我正在使用的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) {
}
答案 0 :(得分:2)
myfunction2
的任何函数中,可以使用this.myfunction2()
调用 MyConstructor
。
在您的情况下,您试图在myfunction2
具有不同含义的另一个函数内调用this
。要访问myfunction2
,您可以为this
或this.myfunction2
创建一个变量,该变量位于关闭范围内,扩展到click
的函数参数
var self = this;
$('#some_element').click(function(){
self.myfunction2('clicked!');
});
或
var myfunction2 = this.myfunction2;
$('#some_element').click(function(){
myfunction2('clicked!');
});