js 深拷贝

var json1 = {
    "name": "哈哈",
    "age": 18,
    "arr1": [1, 2, 3, 4, 5],
    "string": 'afasfsafa',
    "arr2": [1, 2, 3, 4, 5],
    "arr3": [
        { "name1": "嘿嘿" },
        { "job": "前端开发求职" }
    ]
};
var json2 = {};

function copy(obj1, obj2) {
  var obj2 = obj2 || {}; //最初的时候给它一个初始值=它自己或者是一个json
  for (var name in obj1) {
    if (typeof obj1[name] === "object") { //先判断一下obj[name]是不是一个对象
      obj2[name] = (obj1[name].constructor === Array) ? [] : {}; //我们让要复制的对象的name项=数组或者是json
      copy(obj1[name], obj2[name]); //然后来无限调用函数自己 递归思想
    } else {
      obj2[name] = obj1[name]; //如果不是对象,直接等于即可,不会发生引用。
    }
  }
  return obj2; //然后在把复制好的对象给return出去
}
json2 = copy(json1, json2) json1.arr1.push(6);
alert(json1.arr1); //123456
alert(json2.arr1); //12345
2017-09-15 08:34 浏览(234) 留言(0)