gpt4 book ai didi

javascript - 数组/对象按值复制/按引用复制之谜

转载 作者:行者123 更新时间:2023-11-30 06:33:00 25 4
gpt4 key购买 nike

我正在使用 Google Apps Script/JS 开发一个项目,由于某种原因,当我尝试使用 Object.create() 方法复制对象数组时出现意外行为。相关的代码片段如下,当函数完成时......即使正确传递了第二个参数,原始对象数组也会被修改。

  WebConfigParser.prototype.compareWith = function(array_of_objs, parameter_flag)
{
var safe_array_of_objs = [];
var array_of_objs_to_touch;
if(parameter_flag)
{
if(parameter_flag === "passbyval")
{
for(var i = 0; i < array_of_objs.length; i++)
{
safe_array_of_objs.push(Object.create(array_of_objs[i]));
}
array_of_objs_to_touch = safe_array_of_objs;
}

}
else
{
array_of_objs_to_touch = array_of_objs;
}
///more code happens here...but i'm always referring to "array_of_objs_to_touch"
}

最佳答案

要获取一维数组的深拷贝,您可以使用Array.slice()

var a=[1,2,3],
b=a.slice(), //deep copy
c=a;
a[1]=3;
console.log(a,b,c)

关于javascript - 数组/对象按值复制/按引用复制之谜,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16364054/

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