引用類型的深拷貝

項目中,需要用到深拷貝問題,稍微總結了一下:
<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))的方式進行深拷貝,即切斷引用之間的聯繫,拿到某個數組或對象進行修改,而不會對其本身及其引用產生影響;但是函數不能進行深拷貝。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章