在JavaScript中克隆对象的解耦版本
我正在尝试克隆和对象,然后对原始对象进行更改,并进行一些测试。如果测试失败,请恢复克隆在JavaScript中克隆对象的解耦版本,javascript,angularjs,Javascript,Angularjs,我正在尝试克隆和对象,然后对原始对象进行更改,并进行一些测试。如果测试失败,请恢复克隆 目前我尝试了.clone(下划线),angular.extend,angular.merge,angular.copy,Object.create,Object.assign,JSON.parse(JSON.stringify(o)),但不知何故,我在原始对象中所做的更改会反射回克隆中。您可以使用object.assign在普通JavaScript中浅层复制对象 //在Winilla JS中浅拷贝一个对象
目前我尝试了
.clone
(下划线),angular.extend
,angular.merge
,angular.copy
,Object.create
,Object.assign
,JSON.parse(JSON.stringify(o))
,但不知何故,我在原始对象中所做的更改会反射回克隆中。您可以使用object.assign
在普通JavaScript中浅层复制对象
//在Winilla JS中浅拷贝一个对象
设oldObj={
名字:'乔',
彩色:“绿色”,
}
//使用assign将oldObj浅复制到newObj
var newObj=Object.assign({},oldObj);
//对新对象所做的更改不会反映在新对象中
newObj.favFood=‘比萨饼’;
console.log(oldObj.favFood);//未定义的
可能您需要一个?\克隆
对对象进行浅拷贝,但您需要一个深拷贝。请尝试\uu.cloneDeep
。不幸的是,我们没有使用lodash,我尝试使用角度等效,但所有这些都反映了变化var clone=JSON.parse(JSON.stringify(o))
可能有帮助吗?@BenAston didnt:(我做了{originalPizza:Object.assign({},pizza)},但当我对比萨配料进行更改时,它会反映到原来的比萨中。@ArashKiani-我添加了一个同时执行“浅拷贝”和“深拷贝”的示例。我希望这能有所帮助!