浅拷贝指向的是同一个对象。
就是把一个对象的所有内容复制给另一个对象,或者说就是把引用地址给了另一个对象,他们指向同一个地址。
var obj1 = {
name: 'mimi',
age: 2.5,
like: ['eat','fight','sleep']
};
// 第一种浅拷贝的方法,直接复制
var obj2 = obj1;
// 第二种浅拷贝的方法,把obj1中的多有对象复制到obj2中
var obj3 = {};
function shallowCopy(obj, targetObj){
for (const key in obj) {
targetObj[key] = obj[key];
}
}
shallowCopy(obj1, obj3);
console.log(obj3);// {name: "mimi", age: 2.5,like:["eat", "fight", "sleep", "haha"]}
console.log(obj1);// {name: "mimi", age: 2.5,like:["eat", "fight", "sleep", "haha"]}
obj1.like.push('haha');
console.log(obj3.like);//["eat", "fight", "sleep", "haha"]
深拷贝是另外一个对象开辟对应的空间,是两个不同的对象。
数组方法:slice、concat都是深拷贝。
JSON.parse(JSON.stringify(obj))
Object.assign()是一种可以对非嵌套对象进行深拷贝的方法,如果对象中出现嵌套情况,那么其对被嵌套对象的行为就成了普通的浅拷贝。