Vue中的deepCopy是用來復制對象和數組的函數。在Vue中,因為對象和數組是引用類型,我們如果直接對它們進行賦值,會導致同一對象或數組在內存中只有一個引用,這樣容易導致不必要的數據改變。
為了避免這種情況,我們需要使用Vue的deepCopy來復制一個新的對象或數組,從而避免在內存中只有一個引用的問題。
const original = {a: 1, b: {c: 2}};
const copied = Vue.$set({}, '', JSON.parse(JSON.stringify(original)));
方法如上:使用JSON的parse和stringify方法,先將js對象轉為json字符串,在將json字符串轉為新的js對象。如果對象內部有函數或者Date等不能被轉化為json格式的項,就無法被實現deep copy。
Vue中的deepCopy還有其他幾個方法,如使用lodash庫中的cloneDeep方法。
import cloneDeep from 'lodash/cloneDeep';
const original = {a: 1, b: {c: 2}};
const copied = cloneDeep(original);
使用第二種方法,我們還需要在工程中引入lodash庫。
上一篇vue delete后
下一篇vue取組件屬性