JS實現深拷貝,淺拷貝的方法

在 JS 中,函數和對象都是淺拷貝(地址引用);其餘的,例如布爾值、數字等基礎數據類型都是深拷貝(值引用)。函數

深拷貝code

  1. JSON.parse(JSON.stringify(src)):這種方法有侷限性,若是屬性值是函數或者一個類的實例的時候,沒法正確拷貝
  2. 藉助第三方庫:jq 的extend(true, result, src1, src2[ ,src3])、lodash 的cloneDeep(src)
  3. 藉助 HTML5 的MessageChannel:這種方法有侷限性,當屬性值是函數的時候,會報錯
  4. 手動作一個「完美」的深拷貝函數:https://godbmw.com/passages/2019-03-18-interview-js-code/

淺拷貝對象

  1. ES6 的 Object.assign()
  2. ES7 的...解構運算符
相關文章
相關標籤/搜索