在下面的代码中,除了将对象实例作为全局变量引入外,是否有更好的方法从
handleClick()
中引用它?var Widget = function() {
this.property = 'value';
this.bindEvents();
}
Widget.prototype = {
bindEvents: function() {
$('button').on('click', this.handleClick);
},
handleClick: function() {
var self = window.Widget;
console.log(self.property);
}
}
window.Widget = new Widget();
这个问题是在询问同样的事情,而(未被接受的)答案是将回调传递给$.on()
并从那里调用处理程序,如下所示,传入实例作为参数:
bindEvents: function() {
var self = this;
$('button').on('click', function() {
self.handleClick.apply(self);
});
}
这种通过将实例传递的技术是否真的是正确的方式,除了我展示的两种方法外,还有其他更好的方式吗?
$.proxy
,可能就不会发布我的问题了。但我还是会保留它,除非有反对意见 - 因为有一些很好的答案,并且可能帮助某人查看代码中引用的多种技术。 - cantera