封装一个常用方法 需要深拷贝的时候就引入这个方法把数据丢进去就好
/**
* 深拷贝对象,可以正确序列化日期
* * @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))
局限性会有一些但是也挺长用的