从jQuery函数引用Javascript“Class”方法

时间:2011-05-20 19:31:37

标签: javascript jquery object this prototype-programming

如何从jQuery函数中引用Javascript中的父“class”方法?例如:

$Object.prototype.TestFunction = function(arg){
  alert(arg);
}

$Object.prototype.foo = function(){
    $(something).click(function(){
        this.TestFunction("Hello"); //Obviously doesn't work.
    });
}

我有可预测的数据集,需要在页面上查看多个集合和结果,这就是为什么我构建了一个对象来处理它。但是,当我使用任何“jQuery”并尝试从内部引用对象属性或方法时,它显然不起作用。

这可能吗?

非常感谢您提前花时间和精力。

2 个答案:

答案 0 :(得分:4)

只需将this分配给变量,并在闭包中引用变量。

$Object.prototype.foo = function(){
    var that = this; //<--here
    $(something).click(function(){
        that.TestFunction("Hello");
    });
};

<强> Example on jsfiddle

答案 1 :(得分:3)

我首选的方法是使用$ .proxy:

$Object.prototype.foo = function(){
    $(something).click($.proxy(this.TestFunction,this);
};

它更干净,并且还将任何参数(如事件)传递给处理函数。