如何在原型“类”中调用原型函数?

时间:2010-05-01 21:36:19

标签: javascript jquery class function prototype

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()");
}

2 个答案:

答案 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