请考虑以下代码段。
var SomeView = Backbone.View.extend({
collection: new SomeCollection(),
render: function() {
this.$el.empty();
this.collection.each( function (modelInCollection) {
var newView = new AnotherView({ model: modelInCollection });
this.$el.append(newView.render().el);
}, this);
});
替换
会更有效(记忆,计算)吗?this.$el.append(newView.render().el);
带
this.$el.append(newView.render().$el);
?哪一种更优雅,为什么?
答案 0 :(得分:3)
第一个 - this.$el.append(newView.render().el);
会更有效率,因为append()的底层代码需要DOM节点或jQuery元素,但最终需要将jQuery元素转换为DOM节点,因为追加()最终将使用需要DOM节点的appendChild()。
效果测试:
因此,它似乎只是一种微观优化。运行jsPerf测试,附加DOM节点或jQuery对象基本相同,结果总是在误差范围内。