为什么使用这个?
我一直在看基于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?