是否需要缓存“this”并在 backbone.js 中设置其上下文?

Is there a need for both caching 'this' and set its context in backbone.js?

提问人:pontus222 提问时间:6/12/2014 更新时间:6/23/2014 访问量:58

问:

此代码来自视图的 render 方法中的 backbone.js。我注意到作者既将“this”缓存到var“that”中,又将上下文设置为this。是否有任何理由既要缓存“this”,又要显式设置上下文?它似乎只适用于其中一个作品。

render: function () {
    var that = this;
    _.each(this.collection.models, function (item) {
        that.renderContact(item);
    }, this);
},
javascript 骨干 .js 这个

评论

2赞 benhowdle89 6/12/2014
我猜这只是一个疏忽,或者两个开发人员针对同一个问题实施了自己的解决方案。但是,是的,这是矫枉过正。
1赞 Henrik Andersson 6/12/2014
在这种情况下,它没有任何作用,可能只是在重构后被遗弃了。
0赞 josephnvu 6/13/2014
是的,看起来像是一个疏忽。我不确定内存的后果,但如果我错了,请纠正我,在这种情况下缓存这个会导致它变慢(可能是几分之一纳秒)。
0赞 josephnvu 6/13/2014
还有这个牵线木偶吧?不是骨干。我不认为骨干有预定义的渲染
0赞 Evan Davis 6/23/2014
@josephnvu我相信这是 OP 的渲染方法,而不是 Backbone 源。

答:

0赞 Muhaimin 6/23/2014 #1

这应该像

this.collection.each(this.renderContact, this);

将完成上面代码尝试执行的任何结果

评论

0赞 Evan Davis 6/23/2014
调用集合时是否仍需要传递上下文?each
0赞 Muhaimin 6/23/2014
对你来说更容易,这样你就可以确保被调用的函数绑定到正确的上下文