JavaScript深拷貝和淺拷貝


1. 基本類型 和 對象類型

  他們最大的區別就是在於他們的傳值方式。 基本類型是傳值 對象類型就是傳引用。

  

  這里復制一份obj叫做obj2, 這里修改了obj2的b為100 同時也修改了obj1.b。 因為他們本來就是一個對象 這就是所謂的淺拷貝。

  避免這樣的情況 我們這樣寫

  

  這就是深拷貝 不會改到原來的obj1。

  

  淺拷貝只復制指向某個對象的指針,而不復制對象本身,新舊對象還是共享同一塊內存。但深拷貝會另外創造一個一模一樣的對象,新對象跟原對象不共享內存,修改新對象不會改到原對象

2. Object.assign

  Object.assign是ES6 的新函數, 可以實現上面一樣的功能。

  

  但是這個也不能完成深拷貝。因為只能完成第一層的拷貝。如果要完成深拷貝 可以使用jQuery的方法。

3. jquery的深拷貝

  jquery有一個提供$.extend 可以使用Deep Copy。

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM