为什么使用这个?

我一直在看基于backbone.js的应用程序的一些例子。 我注意到在一些情况下(比如下面的例子),使用了下划线函数_.bindAll()

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

而在其他人(例如下面的待办事项应用程序)中却没有:

initialize: function() {
  this.model.bind('change', this.render, this);
  this.model.bind('destroy', this.remove, this);
},

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


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


In Detail: _.bind(ctx, 'method')

采取你的方法,创建一个与'ctx'绑定的上下文的副本,并将副本添加为属性。

这是jQuery.bind()的解决方法,不允许您传入上下文。 JQ将始终使用未定义的上下文调用回调。 Backbone构建于jQuery之上。

看到这里:http://backbonejs.org/#FAQ-这个

链接地址: http://www.djcxy.com/p/49057.html

上一篇: why is this used?

下一篇: Backbone.js with Rails