我需要创建一个至少有两个方法的对象。第一种方法创建一个事件,将按钮绑定到对象的第二个方法。
但是,我在创建活动时遇到了问题。 this
始终附加到按钮而不是对象的实例。
我尝试了bind()
,但如果是解决方案,我找不到使用它的好方法。
甚至可以这样做吗?如果是的话,怎么办呢?
function obj()
{
this.attribute = 42;
this.eventer();
}
obj.prototype.eventer = function()
{
$("#but").on("click",this.print);
}
obj.prototype.print = function()
{
$("#print").html(this.attribute);
}
var test = new obj();
<script src='//code.jquery.com/jquery.min.js'></script>
<button id="but">Click me !</button>
<div id="print"></div>
答案 0 :(得分:1)
来自bind()的javascript参考手册:
bind()方法创建一个新函数,在调用时,将其this关键字设置为提供的值,并在调用新函数时提供任何前面提供的给定参数序列。
将处理程序传递给click事件时,只需使用this.print.bind(this)
。
function obj()
{
this.attribute = 42;
this.eventer();
}
obj.prototype.eventer = function()
{
$("#but").on("click",this.print.bind(this));
}
obj.prototype.print = function()
{
$("#print").html(this.attribute);
}
var test = new obj();
<script src='//code.jquery.com/jquery.min.js'></script>
<button id="but">Click me !</button>
<div id="print"></div>