javascript - 完全基本的 Javascript 引用问题

标签 javascript deep-copy

Javascript 控制台中的以下内容:

var a = {'foo': []};
var b = {};

for (var key in a) {
   b[key] = a[key];
}

a['foo'].push(1);

console.log(b);

产量:

对象 foo=[1]

我想为 a 中的每个键按每个数组的 b 中的值进行复制。有没有更简单的方法?

最佳答案

您可以创建一个“克隆”函数,该函数基于原始 对象创建一个 对象constructor ,然后克隆原始对象属性,如果它们是对象的话:

function clone(obj){
  if(typeof(obj) != 'object' && obj != null) 
    return obj; // return the value itself if isn't an object
                // or null, since typeof  null == 'object';

    var temp = new obj.constructor();

    for(var key in obj)
        temp[key] = clone(obj[key]);
    return temp;
}


var a = {'foo': []};
var b = clone(a);

a['foo'].push(1);

console.log(b); // Object foo=[0]

关于javascript - 完全基本的 Javascript 引用问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1615134/

相关文章:

Javascript变量随onclick变化

javascript - 在 Kendo Angular DatePicker 中禁用 future 日期

c# - 深度克隆一个对象

javascript - location = "file.exe",下载时显示下载大小?

javascript - 将 Prop 发送到类外的 map 回调

javascript - 绘制 100 万个正方形的可点击网格

pass-by-reference - 值传递/引用等效于分别进行深层/浅层复制吗?

python - 为什么 np.ndarray.__deepcopy__ 需要一个多余的参数?

c++ - 将 RenderTexture 复制到图像

c++ - 异常安全 :