淺拷貝指向的是同一個(gè)對(duì)象。
就是把一個(gè)對(duì)象的所有內(nèi)容復(fù)制給另一個(gè)對(duì)象悯周,或者說就是把引用地址給了另一個(gè)對(duì)象粒督,他們指向同一個(gè)地址。
var obj1 = {
????name: 'mimi',
????age: 2.5,
????like: ['eat','fight','sleep']
};
// 第一種淺拷貝的方法禽翼,直接復(fù)制
var obj2 = obj1;
// 第二種淺拷貝的方法坠陈,把obj1中的多有對(duì)象復(fù)制到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"]
深拷貝是另外一個(gè)對(duì)象開辟對(duì)應(yīng)的空間,是兩個(gè)不同的對(duì)象捐康。
數(shù)組方法:slice仇矾、concat都是深拷貝。
JSON.parse(JSON.stringify(obj))
Object.assign()是一種可以對(duì)非嵌套對(duì)象進(jìn)行深拷貝的方法解总,如果對(duì)象中出現(xiàn)嵌套情況贮匕,那么其對(duì)被嵌套對(duì)象的行為就成了普通的淺拷貝。