浅拷贝
浅拷贝仅仅复制了引用,但是如果根对象的值发生改变的话,引用根对象的都会发生改变。
例子: let obj = {a:1,b:2};
let obj2 = obj;
console.log(obj2.a) // 1
obj.a = 55;
console.log(obj2.a) // 55
深拷贝
深拷贝指即使根对象的值发生的改变,所引用根对象的都不会有影响。
例子:
let obj = {a:1,b:2};
let obj2 = JSON.parse(JSON.stringify(obj));
console.log(obj2.a); // 1
obj.a = 55;
console.log(obj2.a); // 1
例2:
let obj = {a:1,b:2};
let obj2 = deepCopy(obj);
console.log(obj2.a); // 1
obj.a = 55;
console.log(obj2.a); // 1
// 利用 for - in 循环,一个一个复制
function deepCopy(_obj){
var newObj = {};
for(let keys in _obj){
if(_obj.hasOwnProperty(keys)){
newObj[keys] = _obj[keys]
}
}
return newObj;
}
有什么不对的地方或者需要改进的欢迎指出。