jQuery覆盖'这个'原型

时间:2015-11-17 13:55:57

标签: javascript jquery prototype

我已经声明了一个JavaScript对象:

function A(name){
    this.name=name
}

A.prototype.test=function(){
    console.log(this.name);
};

作为一个简单的例子,我设置了一个按钮,如果它被点击,应该将一个变量输出到本地控制台日志:

<button id='test'>test</button>

脚本:

var t=new A('hello');
$('#test').click(t.test);

当我点击我想要显示的按钮this.name时(在这种情况下&#39;你好&#39;),而this指的是点击的按钮,而不是对象我创建。

这当然是一个调试脚本。在现实生活中,我将一个函数绑定到window.resize事件,该事件将重新构建一个调整大小的窗口。

有一个显示问题的JSFiddle

我有一个解决方案,就是在对象的构造函数中声明调整大小(或单击函数)并使用this的替代名称,如此(Here's the JSFiddle):

function A(name){
    this.name=name

    var self=this;
    $("#test").click(function(){
        console.log(self.name);
    });
}

但我宁愿使用原型并将该函数绑定在对象的构造函数中。我怎么能用原型做到这一点?

1 个答案:

答案 0 :(得分:3)

您可以使用bind,它会提前设置this的值:

var t=new A('hello');
$('#test').click(t.test.bind(t));