作用:深拷贝是想修改从接口拿到的数据,但又不想改变源数据
1 第一种方法比较简便:
JSON.parse(JSON.stringify(data))
但是注意他无法实现对象中方法的深拷贝
var obj = {name:function(){},age:12}
JSON.parse(JSON.stringify(obj)
// 输出的结果会是:{age: 12}
2 可以在公共的方法文件中写上个函数,在想要用的页面引用如:
/**
* 使用递归的方式实现深拷贝
*/
const deepClone = function (target) {
let result
if (Array.isArray(target)) {
result = []
target.forEach(item => {
result.push(deepClone(item))
})
} else if (typeof target === 'object' && target !== null) {
result = {}
for (const key in target) {
if (Object.hasOwnProperty.call(target, key)) {
result[key] = deepClone(target[key])
}
}
} else {
result = target
}
return result
}
在页面中引用
import { deepClone } from '@/xx/xx.js'
应用
let res = deepClone(返回的接口数据)