封裝一個常用方法 需要深拷貝的時候就引入這個方法把數據丟進去就好
/**
* 深拷貝對象,可以正確序列化日期
* * @param {*} obj
* */
export const DEEP_CLONE = function (obj) {
let objClone = Array.isArray(obj) ? [] : {}
if (obj && typeof obj === 'object') {
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
// 判斷ojb子元素是否爲對象,如果是,遞歸複製
if (obj[key] && typeof obj[key] === 'object') {
// 深拷貝日期類型
if (obj[key] instanceof Date) {
objClone[key] = new Date(obj[key].valueOf())
// console.log('deepClone', objClone[key])
} else {
objClone[key] = DEEP_CLONE(obj[key])
}
} else {
// 如果不是,簡單複製
objClone[key] = obj[key]
}
}
}
}
return objClone
}
還有一個簡單的方法就是
newData = JSON.parse(JSON.stringify(data))
侷限性會有一些但是也挺長用的