深拷贝方法
法一:
JSON.stringify() JSON.parse()
var str = ''
var p = {
name: 'xw',
weight: '123kg'
}
// 前后端数据交互的类型 json 是一个字符串
var person = '{name: "xw", weight: "123kg"}'
// JSON.parse 字符串转对象
// JSON.stringify 对象转字符串
var p1 = JSON.stringify(p)
console.log(p);
console.log(p1);
var p2 = JSON.parse(p1);
console.log(p2);
var p3 = JSON.stringify(p);
console.log(p3);
p3 = JSON.parse(p3);
console.log(p3);
p.name = 'wxc';
console.log(p)
console.log(p3);
法二
deepClone()
function deepClone(obj){
// 判断obj的类型 分别声明数组或对象
var objClone = Array.isArray(obj) ? [] : {};
if(obj && typeof obj==="object"){
for(key in obj){
//判断obj子元素是否为对象,如果是,递归复制
if(obj[key] && typeof obj[key] === "object"){
objClone[key] = deepClone(obj[key]);
}else{
//如果不是,简单复制
objClone[key] = obj[key];
}
}
} else {
// 非数组或对象 直接赋值返回
objClone = obj;
}
return objClone;
}