function FakeClass(){};
FakeClass.prototype.someMethod = function(){};
FakeClass.prototype.otherMethod = function(){
//need to call someMethod() here.
}
我需要从otherMethod调用someMethod,但显然它不起作用。如果我将它构建为单个函数(不是原型),我可以调用它,但调用prototyped不起作用。我怎么能这样做,好像我正在处理函数就像一个类方法?
更新 我在触发jQuery事件后调用该方法。它会影响整个事物的行为方式吗?
function CicloviarioEngine(){};
CicloviarioEngine.prototype.test = function(){
alert("Hey");
}
CicloviarioEngine.prototype.initialize = function(){
$('#add-route').click(function(){
this.test(); //doesn't work
CicloviarioEngine.test(); //doesn't work
externalTest(); //works
});
}
function externalTest(){
alert("externalTest()");
}
答案 0 :(得分:4)
this
与封闭的this
函数中的initialize
不同(实际上它将是对已单击元素的引用)。处理此问题的最简单方法是将this
的值保存到变量中,事件处理程序可以从其封闭范围访问该变量:
CicloviarioEngine.prototype.initialize = function() {
var that = this;
$('#add-route').click(function(){
that.test();
});
};
答案 1 :(得分:2)
原型的成员将在对象实例上可用,因此您只需使用this
关键字调用该方法:
FakeClass.prototype.otherMethod = function(){
this.someMethod();
};
查看示例here。