这样,this
里面的对象onVisibilityChange
将是您的视图对象。
如果你不需要这个,那么不要使用_.bind
. 唯一的问题是你以后必须非常小心,当你改变主意并使用this
inside时onVisibilityChange
:你将很有可能忘记它this
不引用视图对象,并在你的代码中引入一些有趣的错误。
这是一个工作示例,有和没有_.bind
:
var MyView1 = Backbone.View.extend({
initialize: function () {
$(document).on('click', _.bind(this.onClick, this));
},
onClick: function () {
console.log('inside onClick, "this" is ' + this.toString());
},
toString: function () {
return "[object MyView1]";
}
}),
myView1 = new MyView1(),
MyView2 = Backbone.View.extend({
initialize: function () {
$(document).on('dblclick', this.onDblClick);
},
onDblClick: function () {
console.log('inside onDblClick, "this" is ' + this.toString());
},
toString: function () {
return "[object MyView2]";
}
}),
myView2 = new MyView2();
console.clear();
$(document).click();
$(document).dblclick();
输出:
inside onClick, "this" is [object MyView1]
inside onDblClick, "this" is [object HTMLDocument]
为了简单起见,我使用了click
和事件。dblclick
输出写入控制台,按 F12。在最新的 Chrome 中测试。