1. 程式人生 > >js的深復制與淺復制

js的深復制與淺復制

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的深復制與淺復制