gpt4 book ai didi

javascript - 对象被复制,但我想要原件

转载 作者:行者123 更新时间:2023-11-30 20:26:13 26 4
gpt4 key购买 nike

我有一些我知道的全局变量,糟糕的代码等等。这些变量之一:MyApp.player.pet,是宠物类型的对象,附加到玩家对象。它有一些属性,例如“xp”,它只是一个数字。

我将这个对象传递给一个显示各种对象信息的动态 UI 类,这就是为什么我不能在对象内部使用对全局变量的引用。这是我通过它的方式:

 var listOfProperties =
[MyApp.player.pet.name,
{"xp: ": MyApp.player.pet.xp},
{"xpToNextLevel: " : MyApp.player.pet.xpToNextLevel}];

然后我将这个属性列表转移到一个新的 UI 对象:

new tooltipText(listOfProperties, ..., ...)

但是,当值在 MyApp.player.pet.xp 中更新时,对象 tooltipText 中的值不会改变。它以某种方式传递副本,但如果这些术语正确,我想传递引用。

我试过搜索这个,但我能找到的只是人们询问如何制作对象的副本,这似乎是我无意中所做的,但不是我想要的。

如何确保当 MyApp.player.pet.xp 更改时,工具提示文本中的值也会更改?

最佳答案

你的问题有一些误解:

  • 您没有创建原始对象的副本。
  • 您只是通过将它们放入新对象(例如 {"xp: ": MyApp.player.pet.xp})来复制它们的一些属性

如果你想改变你原来的对象的属性,你需要在那里改变它们,而不是在你新创建的小对象中。

因此,如果您想要一个通用的属性列表,您还需要保留对原始对象 (MyApp.player.pet) 的引用。示例:

var listOfProperties = {
obj: MyApp.player.pet,
propertyNames: ['xp', 'xpToNextLevel']
}

然后您可以使用属性名称来通用地设置原始对象的属性:

var propertyName = listOfProperties.propertyNames[0];
listOfProperties.obj[propertyName] = newValue;

关于javascript - 对象被复制,但我想要原件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50895340/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com