在这个骨干示例中:
http://arturadib.com/hello-backbonejs/docs/1.html
(function($){
var ListView = Backbone.View.extend({
el: $('body'), // attaches `this.el` to an existing element.
initialize: function(){
_.bindAll(this, 'render'); // fixes loss of context for 'this' within methods
this.render(); // not all views are self-rendering. This one is.
},
render: function(){
$(this.el).append("<ul> <li>hello world</li> </ul>");
}
});
var listView = new ListView();
})(jQuery);
因为只传递了一个参数(函数),所以我没有看到使用bindAll()的重点。
答案 0 :(得分:1)
_.bindAll
用新方法替换对象中的方法,并将上下文设置为对象。 _.bind
返回一个新函数。
这相当于:
this.render = _.bind(this.render, this)
这是更多的verbos,但无论如何都在underscore内完成:
_.bindAll = function(obj) {
var funcs = slice.call(arguments, 1);
if (funcs.length === 0) throw new Error('bindAll must be passed function names');
each(funcs, function(f) { obj[f] = _.bind(obj[f], obj); }); //in this line
return obj;
};