如果我的代码结构如下:
Thing.prototype = {
doSomething: function() {
$(selector).click(this.handleClick.bind(null, this));
},
handleClick: function(self, event) {
console.log(this); //Window
console.log(self); //Thing
}
}
如何将Thing this
上下文绑定到self
参数,并仍保持this
对象的行为,就好像没有使用bind
方法绑定参数一样?
注意:我知道我可以绑定this
并使用e.originalEvent.target
来获取我想要的行为,但我只是好奇是否有其他方式
我希望我能够实现我想要达到的目标,如果有些含糊不清就留下评论。
答案 0 :(得分:1)
如何将Thing这个上下文绑定到self参数并仍然保持this对象的行为,好像没有使用bind方法绑定参数一样?
您不会使用bind
,因为您希望this
是动态的。代替:
doSomething: function() {
var self = this;
$(selector).click(function(e) {
return self.handleClick.call(this, self, e);
});
},
在handleClick
期间,this
将引用被点击的元素,第一个参数将是Thing
实例,第二个参数将是事件:
handleClick: function(self, event) {
console.log(this); // The clicked element
console.log(self); // The Thing
console.log(event); // The event
}