3
使用功能下,深入克隆树,为什么JSON比`in`和`map`克隆对象更快?
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一个是最快的on my tests。为什么?还有更好的选择吗?
因为数组很容易被序列化。在使用对象而不是数组时,'forin'解决方案更快:http://jsperf.com/treedeepclonejsonvsfunction/2 – Shmiddty 2013-02-26 21:56:48
请注意,有人已在Safari上对其进行了测试,结果发现它不是*更快。实际上,JSON是最慢的(在Safari上)。所以它在Chrome上速度最快,在Safari上速度最慢。也许是其他浏览器的混合体。所以这里真的没有问题要回答。 – 2013-02-26 21:57:13
@ T.J。 Crowder - 那就是我:)我认为使用的浏览器可能是一个因素。你在使用哪一个?在Safari中,'clone_map()'比其他的快得多。 – Stuart 2013-02-26 21:57:17