gpt4 book ai didi

javascript - 有什么比 Eval 更快地创建深度克隆吗?

转载 作者:行者123 更新时间:2023-12-02 17:58:24 25 4
gpt4 key购买 nike

我需要创建veryBigObject 的深度克隆。 veryBigObject 需要首先通过 initVeryBigObject 进行初始化。它是这样的:

initVeryBigObject = function(){
veryBigObject = {};
...
//Very Long Calculations to calculate the value of stuff.
...
veryBigObject = {data:stuff}
}
initVeryBigObject();

var clone = JSON.parse(JSON.stringify(veryBigObject)); //slow

or

eval('createClone = function(){ return ' + JSON.stringify(veryBigObject) + '}');
var clone = createClone(); //turns out to be x3 faster

我不太喜欢 eval,但这是我认为克隆需要 init 的对象的唯一快速方法。我错过了什么吗?

编辑:这个问题实际上并不是“克隆对象的最有效方法?”的重复。这些方法在“克隆对象的最有效方法?”中讨论过。是关于使用相同的函数克隆不同的对象。

我的问题是关于多次克隆一个特定对象,显然,“克隆对象的最有效方法?”中讨论的方法比我的评估“策略”所建议的要慢得多。

最佳答案

告诉initVeryBigObject停止创建全局变量。如果您复制任何内容,那么您很可能会做错。

function initVeryBigObject() {
return {
data: stuff // If stuff comes from somewhere else and you need
// to clone it, go for deeper object literals.
};
}

var veryBigObject = initVeryBigObject();
var clone = initVeryBigObject();

关于javascript - 有什么比 Eval 更快地创建深度克隆吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20794785/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com