作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一些我知道的全局变量,糟糕的代码等等。这些变量之一: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/
我是一名优秀的程序员,十分优秀!