JAVASCRIPT:分配给同一对象的另一个方法的方法-更改第一个方法的值会更改第二个方法
因此,我有一个名为JAVASCRIPT:分配给同一对象的另一个方法的方法-更改第一个方法的值会更改第二个方法,javascript,object,methods,variable-assignment,slice,Javascript,Object,Methods,Variable Assignment,Slice,因此,我有一个名为game的javascript对象,它有两种方法: function game() { this.TxtRevealed = new Array(); this.TxtRevealedBackup = new Array(); [...] } 现在,在一个对象之外,我给一个对象分配两个: game.TxtRevealedBackup = game.TxtRevealed; 过了一会儿,我改变了游戏。txt显示了(我使用slice函数从中剪切一些值)。 现在发
game
的javascript对象,它有两种方法:
function game() {
this.TxtRevealed = new Array();
this.TxtRevealedBackup = new Array();
[...]
}
现在,在一个对象之外,我给一个对象分配两个:
game.TxtRevealedBackup = game.TxtRevealed;
过了一会儿,我改变了游戏。txt显示了(我使用slice
函数从中剪切一些值)。
现在发生了我不想发生的事情:自动game.txtrevaledbackup
也会更改game.txtreved
的新值
我希望game.txtrevaledbackup
和game一样。txtreved
正在分配任务。它的工作原理就像game。txtrevaledbackup
指向game所表示的值。txtreved
连续显示,而不是赋值时的值
为什么会发生这种情况,以及如何让它发挥我所期望的作用
Kalreg.对象通过引用工作。如果要克隆对象,请参见此图。是的,对象的工作方式如下。顺便说一句,slice
不会改变数组;最可能的意思是splice
。大多数面向对象编程语言都是这样工作的。对象表示为引用。“如何让它工作我希望”你可以克隆这个对象。我应该做些什么来实现我的目标?@Oriol:很好的发现。我希望有比这更简单的解决方案,比如在变量名中添加&或其他什么。但是如果您使用的是jQuery,您可以使用类似于var cloned=$.extend({},original)的东西代码>。