骨干现在默认是_.bindAll吗?

时间:2011-12-19 23:25:05

标签: backbone.js

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,或者我只是犯了一个愚蠢的错误?

1 个答案:

答案 0 :(得分:5)

当该方法被调用于Class的上下文之外时,仍然是必要的。因为你在上下文中回忆它,所以你不需要它就不是错误。

正如_.bindAllhttp://documentcloud.github.com/underscore/#bindAll)的下划线文档中所提到的,它“对于将用作事件处理程序的绑定函数非常方便,否则将以相当无用的方式调用{ {1}}“。您还可以将它用于需要创建回调的方法。

要了解回调的差异,请看一下这个小提琴。 http://jsfiddle.net/joshvermaire/YQdZu/