骨干模型及其原型链的深度副本
Deep copy of backbone model with its prototype chain
我需要深度复制骨干模型。 clone
方法不进行深层复制,则对attributes
对象的引用将复制到克隆中。我已经通过以下方式完成了此操作:
var model = Backbone.Model();
// modifying model
var clone = _.merge(Object.create(Object.getPrototypeOf(model)), model);
有没有更好的选择?
有没有更好的选择?
使用基准测试.js来比较此方法与本机方法的性能:
var bench1 = new Benchmark(
{'fn':merge_object, 'cycles':0,'count':1,'name':'merge','async':true}
);
var bench2 = new Benchmark(
{'fn':parse_object, 'cycles':0,'count':1,'name':'parse','async':true}
);
var foo = {"bar": {"baz": {"bop": "zero"} } };
function merge_object()
{
var clone = _.merge(Object.create(Object.getPrototypeOf(foo)), foo);
}
function parse_object()
{
new Backbone.Model(JSON.parse(JSON.stringify(foo)))
}
function log(result){console.log(JSON.parse(JSON.stringify(result)))};
bench1.on('complete', log);
bench2.on('complete', log);
bench1.run();
bench2.run();
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.16.6/lodash.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/backbone.js/1.3.3/backbone-min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/benchmark/2.1.2/benchmark.min.js"></script>
引用
-
结构克隆通用JS模块
-
JS对象克隆
-
MDN: Array.from()
相关文章:
- 在不知道深度或父属性的情况下从对象中删除属性
- 递归深度比较
- 如何对映射插件创建的敲除对象进行深度复制
- 处理一个JSON文件;完全相同的副本不是
- 3d上的深度比例错误
- 将对象从另一个不可变的Map分配给Map是否意味着深度克隆
- BatmanJS:深度嵌套路由
- Chai深度包含了对嵌套对象的断言
- javascript对象值的动态深度访问
- 与 lodash 进行对象深度比较的数组
- 我如何制作一个文件的副本并用gump将其移动到父文件夹
- 如何在JS中创建对象的可变和不可变副本
- 重置剑道日期选择器的深度
- JavaScript中的深度嵌套函数
- 保留未修改的dom节点副本问题
- 如何在JSDoc中记录深度大于2的符号
- 在不使用sort()的情况下获取HTML LI元素的副本
- 对象图的JavaScript深度副本
- 如何防止jQuery扩展深度副本复制我的一些自定义属性
- 骨干模型及其原型链的深度副本