項目中,需要用到深拷貝問題,稍微總結了一下:
<script>
const obj = {
name:'Jack',
age:'22',
sex:'female',
}
const obj2 = obj;
obj2.name = 'Rose';
console.log(obj2);
console.log(obj);
console.log('-------以下爲對象拷貝-------') //(數組也可以)
const obj3 = JSON.parse(JSON.stringify(obj));
obj3.name = 'Tom';
console.log(obj3);
console.log(obj);
console.log('-------以下爲函數拷貝-------')
const fn1 = function(){
console.log('fn1');
}
console.log(fn1());
const fn2 = JSON.parse(JSON.stringify(fn1));
console.log(fn2());
</script>
下面我們看打印結果:
可見,引用類型中的數組和對象,可以使用JSON.parse(JSON.stringify(xx))的方式進行深拷貝,即切斷引用之間的聯繫,拿到某個數組或對象進行修改,而不會對其本身及其引用產生影響;但是函數不能進行深拷貝。