vue陣列的深克隆和淺克隆

Kaycee66發表於2020-01-02

在開發過程中,前端獲取到後端的資料之後,通常直接複製後就使用,比如:

var _data = res.data; //淺克隆   data是一個陣列

這就是淺克隆的寫法,因為後端返回的data是一個陣列,而陣列是引用資料型別(自行了解基本資料型別和引用資料型別)
如果我們接下來的程式碼對 _data 進行的處理操作,res.data也會一起改變,這是因為淺克隆, 克隆的是一個地址,而不是實際變數值。

下面我用我的實際專案,演示下 深克隆和淺克隆的區別:

淺克隆:源資料與克隆資料一起改變

   

現在我們克隆資料的時候改成 深克隆,其他的不變

深克隆:源資料沒有隨克隆資料一起改變

   

  從上面可以看到,我使用了JSON.stringify+JSON.parse 進行深克隆,這能滿足很大一部分開發需求了,當然,深克隆的方法還有很多,比如:遞迴、 jQuery中的 $.extend、slice(0)、object.assign、for迴圈遍歷賦值、new Object() 等都是可以的
 

開發過程的記錄,若有不恰當之處,歡迎指正!

相關文章