Backbone.js:初始化中的_.bindAll() - 为什么要使用它?

UpT*_*eek 25 backbone.js

我一直在看一些基于backbone.js的应用程序的例子.我注意到在某些(例如下面这个例子)中使用了下划线函数_.bindAll():

 initialize: function (args) {
        _.bindAll(this, 'changeTitle');
        this.model.bind('change:title', this.changeTitle);
    },
Run Code Online (Sandbox Code Playgroud)

而在其他情况下(例如下面的todo应用程序)不要:

initialize: function() {
  this.model.bind('change', this.render, this);
  this.model.bind('destroy', this.remove, this);
},
Run Code Online (Sandbox Code Playgroud)

_.bindAll()在这种情况下,目的是什么,是否有必要?

sci*_*shi 26

_.bindAll()变化this在命名函数总是指向的对象,这样就可以使用this.model.bind().请注意,在第二个示例中,第三个参数传递给bind(); 这就是为什么_.bindAll()在这种情况下不必使用.一般来说,最好使用模型上的任何方法,这些方法将用作事件的回调,以便您可以this更轻松地引用.