我想在正在使用的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
,您可以为this
或this.myfunction2
创建一个变量,该变量在闭包范围内扩展到click
的功能参数。
var self = this;
$('#some_element').click(function(){
self.myfunction2('clicked!');
});
要么
var myfunction2 = this.myfunction2;
$('#some_element').click(function(){
myfunction2('clicked!');
});