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
浏览(257)
留言(0)
留言
支持markdown