浅拷贝
- 对于基本数据类型,将变量的值赋值给新的变量;
- 对于引用数据类型,将变量的地址赋值给新的变量;
浅拷贝
深克隆
- 对于基本数据类型,将变量的值赋值给新的变量;
- 对于引用数据类型,将变量的属性逐一读取后,再逐一赋值给新的变量;
深克隆封装方法
/*遍历方式*/
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;
}
/*JSON方式*/
function deep_clone(obj){
return JSON.parse(JSON.stringify(ogj));
}