[英]Replace a one javascript object with another object
在页面加载时,我创建了两个 Javascript 对象, objDemo1
和objDemo1Backup
,其中后者只是第一个的精确副本。
例如
objDemo1 {
sub_1 = { something: 123, somethingElse: 321 },
sub_2 = { something: 456, somethingElse: 654 }
}
我可以修改sub_
的值以及添加/删除新的sub_
,但我正在编辑的唯一对象是objDemo1
。 即我从不改变objDemo1Backup
我有一个重置按钮,单击该按钮会将objDemo1
重置回页面最初加载时的状态(即objDemo1 = objDemo1Backup
)。 这是我遇到问题的地方..
如何将objDemo1
设置为objDemo1Backup
?
我努力了:
objDemo1 = objDemo1Backup;
和
objDemo1 = null;
var objDemo1 = objDemo1Backup;
...以及类似的变化,但似乎没有任何效果。 有任何想法吗?
objDemo1Backup
与我创建时完全相同,并且objDemo1
已更改。objDemo1 = objDemo1Backup
使用“重置”功能,在那里我尝试了objDemo1 = objDemo1Backup
......我只是无法弄清楚替换对象的语法。我正在使用angularjs ,我花了一些时间才知道如何将一个对象复制到另一个对象。 通常,您将通过调用clone或在 angular copy 中获得对象克隆:
var targetObj = angular.copy(sourceObj);
这为您提供了源对象的新克隆实例(带有新引用)。 但是快速查看文档会发现copy的第二个参数:
angular.copy(sourceObj, targetObj)
通过这种方式,您可以使用源的字段和方法覆盖目标对象,并保留目标对象的引用。
在 JavaScript 中,对象是通过引用传递的,而不是通过值传递。 所以:
var objDemo, objDemoBackup;
objDemo = {
sub_1: "foo";
};
objDemoBackup = objDemo;
objDemo.sub_2 = "bar";
console.log(objDemoBackup.sub_2); // "bar"
要获得副本,您必须使用复制功能。 JavaScript 本身没有,但这里有一个clone
实现: 如何正确克隆 JavaScript 对象?
var objDemo, objDemoBackup;
objDemo = {
sub_1: "foo";
};
objDemoBackup = clone(objDemo);
objDemo.sub_2 = "bar";
console.log(objDemoBackup.sub_2); // undefined
您可以使用Object.assign
。
ObjectConstructor.assign(target: T, source: U): T & U
它需要两个参数: target
和source
。 当函数完成时, target
对象的所有内部都将附加source
一。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.