js的深復制與淺復制
阿新 • • 發佈:2018-02-06
color 更改 obj arr bsp asc 存儲 字符 同時
什麽是深復制和淺復制?
深復制和淺復制的概念只存在於對象array和數組obj上。
淺復制是:模糊復制,就是不管對方是字符串類型還是引用類型都通通復制過來。結果兩個變量的內容會同時變化。
深復制是:有目的的復制,就是只希望復制變量存儲的內容。
深復制方法:let b = JSON.parse(JSON.strigify( a ));
javascript值的類型有兩種:字符串類型 和 引用類型
字符串類型的復制,值改變時不會影響到另一個變量,如:
let a=7; let b=a; a=6;
console.log(a) // a=6
console.log(b) //b=7
引用類型的復制,值改變時會影響到另一個變量。如:
let a={ name: ‘xiaohong‘ }; let b=a; a.name=‘xiaowang;
console.log(a.name) // a=‘xiaowang‘
console.log(b.name) //b=‘xiaowang‘
因為數組和對象中存儲的不是內容本身,而是存放內容的地址,所以數組和對象被復制給另一個變量時,該變量也指向了該地址。
當a.name變化時只是內容發生更改,地址並沒有改變,所以指向同一地址的a。a.name和b.name都改變了。
js的深復制與淺復制