作用:深拷贝是想修改从接口拿到的数据,但又不想改变源数据
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(返回的接口数据)
本文介绍了深拷贝在处理接口数据时的重要性,以避免原始数据被修改。讨论了两种深拷贝方法,包括使用JSON转换和递归函数实现。通过示例展示了JSON.parse(JSON.stringify())无法复制对象中的方法,而递归函数则能完成复杂对象的深拷贝。在实际应用中,可以引用公共的深拷贝函数来确保数据的独立性。
842

被折叠的 条评论
为什么被折叠?



