2013-05-03 67 views
1

我正在从事Google Apps Script/JS中的项目,出于某种原因,当我尝试使用对象复制对象数组时,出现意外的行为。 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

为了得到一维数组的深层副本,您可以使用Array.slice()

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