大家好,我是Karin。今天要來學習的內容是JavaScript中物件的深拷貝方法。
學習內容來自:彭彭的教學影片
https://www.youtube.com/watch?v=tnT-XbrOKA0&list=PL-g0fdC5RMbqW54tWQPIVbhyl_Ky6a2VI&index=33&t=394s
深拷貝的方法可以完全拷貝物件底下所有層次的資料。
使用JSON方法將物件字串化(Serialze)
JSON.stringify()
再根據字串化的資料重新整理、建立物件結構,完成深拷貝
JSON.parse();
JSON方法無法拷貝"不能字串化(Serialze)的資料"。
也就是無法拷貝物件底下的函式、Symbol等資料。
在JavaScript中,Symbol是一個獨一無二的值,它通常用來作為物件的屬性名稱,以避免和其他屬性名稱衝突。
let a=[1,2,{x:5,y:7}];
let newA=JSON.prase(JSON.stringify(a)); //完成深拷貝
//證明第二層的資料也會被真正的拷貝
newA[2].x=3;
console.log(a[2].x);
執行顯示結果為5,表示第二層的資料有被真正的拷貝,原本a物件中的值未被更動。