Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在JavaScript中克隆对象的解耦版本_Javascript_Angularjs - Fatal编程技术网

在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-我添加了一个同时执行“浅拷贝”和“深拷贝”的示例。我希望这能有所帮助!