【发布时间】:2012-12-05 22:20:56
【问题描述】:
在页面加载时,我正在创建两个 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都指向同一个对象,所以当您更改一个对象时,两者都会更改。这可能看起来不直观,但它是 javascript 的工作方式。 Google “javascript 克隆对象” 了解更多详情。 -
你在玩对象引用,而不是克隆它。您应该克隆您的对象,而不是使用 = 分配它
标签: javascript reset javascript-objects