我有一些全球变量,我知道,坏代码等等。 其中一个变量:MyApp.player.pet,是pet类型的对象,附加到玩家对象。它有一些属性,如“xp”,它只是一个数字。
我将此对象传递给动态UI类,该类显示有关所有类型对象的信息,这就是为什么我不能使用对象内部的全局var的引用。以下是我通过它的方式:
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发生变化时,tooltiptext中的值也会发生变化?
答案 0 :(得分:1)
你的问题有一些误解:
{"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;