我正在开发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"
}
答案 0 :(得分:0)
要获得单维数组的深层副本,可以使用 Array.slice()
var a=[1,2,3],
b=a.slice(), //deep copy
c=a;
a[1]=3;
console.log(a,b,c)