考虑下面的代码片段。
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);?哪一种方式更优雅,为什么?
发布于 2014-03-20 16:19:06
第一个this.$el.append(newView.render().el);会更高效,因为append()的底层代码接受DOM节点或jQuery元素,但最终jQuery元素需要转换为DOM节点,因为append()最终将使用需要DOM节点的appendChild()。
性能测试:
因此,这似乎是一个微观优化充其量。运行jsPerf测试(附加DOM节点或jQuery对象)本质上是相同的,结果总是在错误范围内。
http://jsperf.com/append-jquery-object-vs-append-dom-node
https://stackoverflow.com/questions/22538836
复制相似问题