Javascript 主干和下划线js为什么我需要使用bindAll
我正在以下网址学习教程: 其中包含以下代码片段:Javascript 主干和下划线js为什么我需要使用bindAll,javascript,backbone.js,underscore.js,Javascript,Backbone.js,Underscore.js,我正在以下网址学习教程: 其中包含以下代码片段: (function($){ var ListView = Backbone.View.extend({ el: $('body'), // attaches `this.el` to an existing element. initialize(): Automatically called upon instantiation. Where you make all types of bindings, excludin
(function($){
var ListView = Backbone.View.extend({
el: $('body'), // attaches `this.el` to an existing element.
initialize(): Automatically called upon instantiation. Where you make all types of bindings, excluding UI events, such as clicks, etc.
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);
(函数($){
var ListView=Backbone.View.extend({
el:$('body'),//将'this.el'附加到现有元素。
initialize():在实例化时自动调用。您可以在其中进行所有类型的绑定,不包括UI事件,如单击等。
初始化:函数(){
_.bindAll(this'render');//修复了方法中“this”上下文的丢失
this.render();//并非所有视图都是自呈现的。这一个是。
},
render:function(){
$(this.el)。追加(“- 你好,世界
”;
}
});
var listView=new listView();
})(jQuery);
在initialize方法中,为什么需要执行bindAll。我对bindAll的理解是,它允许在调用render时使用它的上下文
既然我们调用这个.render()的上下文不是这样的…为什么我们需要
bindAll
?在这个代码中,bindAll
对于“render”来说确实是多余的。但是当在其他上下文中调用render
时(特别是作为回调调用时),它很有用。在这段代码中,“render”的bindAll
确实是多余的。但是,当在其他上下文中调用render
时(特别是作为回调调用),它非常有用