项目场景:
在接口返回后,将结果赋值给form 和 oldForm,改变form的值oldForm 也跟着变
问题描述
这里我还用json.parse()处理了下,就是怕出现改变form的值oldForm也跟着变,但没啥效果
gethotspotInfo({ id: item.id }).then(res => {
this.title = '编辑热点'
this.form = res.data
this.oldForm = JSON.parse(JSON.stringify(this.form))
})
原因分析:
使用json.parse(json.stringify())实现对简单数组或对象第一层的深拷贝
解决方案:
通过递归方式实现深拷贝
function deepClone(obj) {
var target = {};
for (var key in obj) {
if (Object.prototype.hasOwnProperty.call(obj, key)) {
if (typeof obj[key] === 'object') {
target[key] = deepClone(obj[key]);
} else {
target[key] = obj[key];
}
}
}
return target;
}