[英]Replace a one javascript object with another object
On page load I am creating two Javascript Objects, objDemo1
and objDemo1Backup
where the latter is simply an exact copy of the first.在页面加载时,我创建了两个 Javascript 对象,
objDemo1
和objDemo1Backup
,其中后者只是第一个的精确副本。
eg例如
objDemo1 {
sub_1 = { something: 123, somethingElse: 321 },
sub_2 = { something: 456, somethingElse: 654 }
}
I can modify the values in sub_
as well as add / delete new sub_
's but the only object I am editing is objDemo1
.我可以修改
sub_
的值以及添加/删除新的sub_
,但我正在编辑的唯一对象是objDemo1
。 ie I never change objDemo1Backup
即我从不改变
objDemo1Backup
I have a reset button that when clicked will reset objDemo1
back to what it was when the page originally loaded (ie objDemo1 = objDemo1Backup
).我有一个重置按钮,单击该按钮会将
objDemo1
重置回页面最初加载时的状态(即objDemo1 = objDemo1Backup
)。 This is where I am having the issue..这是我遇到问题的地方..
How do I set objDemo1
to objDemo1Backup
?如何将
objDemo1
设置为objDemo1Backup
?
I have tried:我努力了:
objDemo1 = objDemo1Backup;
and和
objDemo1 = null;
var objDemo1 = objDemo1Backup;
...as well as similar variations but nothing seems to work. ...以及类似的变化,但似乎没有任何效果。 Any ideas?
有任何想法吗?
objDemo1Backup
is exactly the same as it was when I created it and objDemo1
has changed.objDemo1Backup
与我创建时完全相同,并且objDemo1
已更改。objDemo1 = objDemo1Backup
... I just cannot figure out the syntax to replace the object.objDemo1 = objDemo1Backup
使用“重置”功能,在那里我尝试了objDemo1 = objDemo1Backup
......我只是无法弄清楚替换对象的语法。I'm using angularjs and it took me some time to find out how to copy an object to another object.我正在使用angularjs ,我花了一些时间才知道如何将一个对象复制到另一个对象。 Normally you'll get an objects clone by calling clone or here in angular copy :
通常,您将通过调用clone或在 angular copy 中获得对象克隆:
var targetObj = angular.copy(sourceObj);
This gives you a new cloned instance (with a new reference) of the source object.这为您提供了源对象的新克隆实例(带有新引用)。 But a quick look into the docs reveals the second parameter of copy :
但是快速查看文档会发现copy的第二个参数:
angular.copy(sourceObj, targetObj)
This way you can override a target object with the fields and methods of the source and also keep the target objects reference.通过这种方式,您可以使用源的字段和方法覆盖目标对象,并保留目标对象的引用。
In JavaScript objects are passed by reference, never by value.在 JavaScript 中,对象是通过引用传递的,而不是通过值传递。 So:
所以:
var objDemo, objDemoBackup;
objDemo = {
sub_1: "foo";
};
objDemoBackup = objDemo;
objDemo.sub_2 = "bar";
console.log(objDemoBackup.sub_2); // "bar"
To get a copy, you must use a copy function.要获得副本,您必须使用复制功能。 JavaScript doesn't have one natively but here is a
clone
implementation: How do I correctly clone a JavaScript object? JavaScript 本身没有,但这里有一个
clone
实现: 如何正确克隆 JavaScript 对象?
var objDemo, objDemoBackup;
objDemo = {
sub_1: "foo";
};
objDemoBackup = clone(objDemo);
objDemo.sub_2 = "bar";
console.log(objDemoBackup.sub_2); // undefined
You can use Object.assign
.您可以使用
Object.assign
。
ObjectConstructor.assign(target: T, source: U): T & U
It takes up two parameters: target
and source
.它需要两个参数:
target
和source
。 When function completes, all internals of target
object will be appended with source
one.当函数完成时,
target
对象的所有内部都将附加source
一。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.