【问题标题】:JAVASCRIPT: method assigned to another method of same object - changing value of first changes second one [duplicate]JAVASCRIPT:分配给同一对象的另一个方法的方法-更改第一个更改第二个的值[重复]
【发布时间】:2016-07-11 08:41:37
【问题描述】:

所以我有一个名为game的javascript对象,它有两种方法:

function game() {
    this.TxtRevealed = new Array();
    this.TxtRevealedBackup = new Array();
[...]
}

现在,在一个对象之外,我分配一个两个:

game.TxtRevealedBackup = game.TxtRevealed;

一段时间后,我更改了game.TxtRevealed(我使用slice 函数从中删除了一些值)。 现在发生了一些我不希望发生的事情:game.TxtRevealedBackup 也会自动更改为 game.TxtRevealed 的新值。

我希望game.TxtRevealedBackup 与分配时的game.TxtRevealed 相同。就好像game.TxtRevealedBackup 连续指向由game.TxtRevealed 表示的值,而不是它在赋值时的值。

为什么会发生这种情况以及如何使其正常工作?

卡雷格。

【问题讨论】:

  • 是的,对象是这样工作的。顺便说一句,slice 不会改变数组;很可能你的意思是splice
  • 大多数面向对象的编程语言都以这种方式工作。对象表示为引用。 “我希望如何让它工作”你可以克隆对象。
  • 我应该怎么做才能实现我的目标?
  • @Oriol:很好的发现。

标签: javascript object methods variable-assignment slice


【解决方案1】:

对象通过引用起作用。如果您想克隆对象,请参阅answer

【讨论】:

  • 我希望有比这更简单的解决方案,比如将 & 添加到变量的名称或某事。
  • 不。但是如果你使用的是 jQuery,你可以使用类似var cloned = $.extend({}, original);.
猜你喜欢
  • 2020-12-26
  • 1970-01-01
  • 2016-03-14
  • 2015-03-23
  • 1970-01-01
  • 2023-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多