This tutorial建议我们需要_.bindAll
来在我们的函数中获取this
的正确值。 Backbone似乎不再需要_.bindAll
。以下代码将相同的内容记录两次:
var TestView = Backbone.View.extend({
initialize: function () { _.bindAll(this, 'func1'); },
func1: function () { console.log(this); },
func2: function () { console.log(this); }
});
var testView = new TestView();
testView.func1();
testView.func2();
我是否认为不再需要bindAll
,或者我只是犯了一个愚蠢的错误?
答案 0 :(得分:5)
当该方法被调用于Class的上下文之外时,仍然是必要的。因为你在上下文中回忆它,所以你不需要它就不是错误。
正如_.bindAll
(http://documentcloud.github.com/underscore/#bindAll)的下划线文档中所提到的,它“对于将用作事件处理程序的绑定函数非常方便,否则将以相当无用的方式调用{ {1}}“。您还可以将它用于需要创建回调的方法。
要了解回调的差异,请看一下这个小提琴。 http://jsfiddle.net/joshvermaire/YQdZu/