json原始数据被修改

json初始数据被修改,只想对实例的当前对象进行修改,改怎么处理?

当要直接赋值的时候,如果是读json的数据,记得拷贝一份,就是 let a ={},然后遍历json的数据复制给a,返回a

如果是对象的话,你要在实例里面拷贝一个副本啊。
这个和creator无关

多谢大佬指教,这种方法可行
let obj: any = {};
let copy = (data, parent) => {
for (let key in data) {
let o = levelInfo[key];
if (Array.isArray(o)) {
parent[key] = o.slice();
} else if (typeof o == “object” && o !== null) {
parent[key] = {};
copy(o, parent[key]);
} else {
parent[key] = o;
}
}
}
copy(levelInfo, obj);
return obj;

最简单的方法是JSON.parse(JSON.stringify(xxx))

1赞

Object.freeze() 方法可以冻结一个对象。一个被冻结的对象再也不能被修改;冻结了一个对象则不能向这个对象添加新的属性,不能删除已有属性,不能修改该对象已有属性的可枚举性、可配置性、可写性,以及不能修改已有属性的值。此外,冻结一个对象后该对象的原型也不能被修改。freeze() 返回和传入的参数相同的对象。

你的需求更像是深层克隆。

归咎根本: 你要懂得 什么是引用变量 什么是数值变量
在c中就是 普通的数据 和 指针
你就知道你的问题所在了 如果你不理解 别的地方还会有问题

展开符了解一下,如果是数组类型的把{}换成[]即可。注意引用和值类型的变量的区别。

深拷贝,浅拷贝了解一下