我不知道如何解释这一点,这真的很困扰我。它弄乱了我的很多代码。无论如何,基本上就是这样。假设我有一个包含一些值的结构的变量,比如默认设置:
var DefaultValues = {
username: "cakeisajoke",
this: "is some",
default: {
data: 483
},
lives: 3,
playerX: 0,
playerY: 0
}
在我的代码中,我将此变量用作“模板”,因此我可以更轻松地重置我的游戏。像这样:
var GameValues = DefaultValues;
好的,到目前为止,这是有道理的。现在,假设玩家失去生命:
GameValues.lives--;
或者,玩家移动一些:
GameValues.playerX += 20;
GameValues.playerY -= 10;
所以,现在我的 GameValues 改变了,我将游戏设置为这个。但是,然后玩家失败了,游戏结束了。如果他想再次玩,我所要做的就是将 GameValues 变量重置为默认值:
GameValues = DefaultValues;
而且,就我而言,这应该只是将 GameValues 设置为 DefaultValues,对吗?但是,事实并非如此。出于某种原因,GameValues 和 DefaultValues 现在具有相同的值,而实际上它们不应该。例如,DefaultValues 现在是 0,而不是原来的 1。
为什么要这样做?我已经看了,又看了一遍,除了那个初始结构之外,我没有在代码中的任何地方设置 DefaultValues。
“我以这个和默认值为例,我知道我实际上不能使用它们,因为它们是保留的”