从我的阅读看来,在扩展 Backbone.js 类(如 Model)时,一种相当常见的模式是在构造函数中调用 _.bindAll,如下所示(参见https://raw.github.com/eschwartz/backbone.googlemaps/主/lib/backbone.googlemaps.js):
GoogleMaps.Location = Backbone.Model.extend({
constructor: function() {
_.bindAll(this, 'select', 'deselect', 'toggleSelect', 'getLatLng', 'getLatlng');
// etcetera
我确实理解为什么会这样做,但是需要将方法名称显式传递给 _.bindAll 似乎是一个维护问题——如果添加新方法,则必须记住将它们作为参数添加到 _.bindAll 。
今天早些时候,我在这里发布了一个有点冗长的解决方案:https ://stackoverflow.com/a/17977852/34806
但是,下面的简单技术不应该完全避免调用 _.bindAll 的需要吗?也就是说,不是分配“自定义”方法的习惯方式,而是将它们全部附加到构造函数中的“this”:
constructor: function() {
this.foo = function() {};
this.bar = function() {};
}
这种技术有什么缺点吗?