使用以下功能深度克隆树
function clone_map(obj){
return obj.map(function(val){
return typeof(val) == "object" ? clone_map(val) : val;
});
};
function clone_forin(obj){
var result = [];
for (var key in obj){
var val = obj[key];
result.push(typeof(val) == "object" ? clone_forin(val) : val);
};
return result;
};
function clone_json(obj){
return JSON.parse(JSON.stringify(obj));
};
JSON one是最快的on my tests。为什么?还有更好的选择吗?
答案 0 :(得分:4)
从后续测试中可以看出,JSON选项在某些版本的Chrome上更快,但在Safari或Firefox上却没有。您可能也会在其他浏览器中找到混合。
您的JavaScript克隆代码使用JavaScript。浏览器可以在高度优化的机器代码中自由实施JSON.stringify
和JSON.parse
。 (如果感觉需要,也可以自由地将JavaScript编译成优化的机器代码。)因此,有时候,一个相当简单的数组(例如您测试过的那个)可能会更快JSON比不。在一些引擎上。有一些样本数据集。而在其他引擎(或其他样本数据集)上,会有不同的结果。
值得注意的是,差异并不大,不是任何现实世界的意义。在Chrome 24中显示的测试中,JSON选项比最接近的竞争对手快25%左右。但是每次单独的迭代都非常快,以至于它没有真正的区别。 392k操作/秒与521k操作/秒,它仍然是操作/秒的流量。 : - )