gpt4 book ai didi

javascript - 为什么对引用的引用不会更新原始对象?

转载 作者:行者123 更新时间:2023-12-03 08:15:45 24 4
gpt4 key购买 nike

嗯,我正在制作一个函数来随着时间的推移更新玩家的生命值。

在我的 NodeJS 端,我将玩家数组传递给 require('./addHp')(players);addHp.js 中我完全有这个工作功能:

module.exports = function (players) {

var addHp = setInterval ( function () {
for (var player in players) {
var thisPlayer = players[player];
(thisPlayer.hp < thisPlayer.maxHp) ? //Uggly
thisPlayer.hp += 10 : //Uggly
thisPlayer.hp = thisPlayer.maxHp; //Uggly
}
}, 2000);

}

但是它确实不太容易阅读,所以我做了一些更改:

module.exports = function (players) {
var addHp = setInterval ( function () {

for (var player in players) {
var thisPlayer = players[player];
var hp = thisPlayer.hp;
var maxHp = thisPlayer.maxHp;

(hp < maxHp) ? hp += 10 : hp = maxHp; //Beautiful

}
}, 2000);
}

所有正确的值都达到 hpmaxHp,但是当我将 hp 更改为 5000 时, 的值Players[player].hp 不会改变。为什么?我该如何使用它?

最佳答案

这不起作用,因为 hp (可能是一个数值,根本不是一个对象)没有附加到任何外部对象。您的对象是players数组中的一个值(或players对象,并不重要),并且您需要改变那个。确实没有办法解决这个问题。

话虽如此,我会写得有点不同:

for (var player in players) {
var p = players[player];
p.hp = Math.max(p.maxHp, p.hp + 10);
}

如果players是一个数组,你甚至可以这样做:

for (var player of players) {
player .hp = Math.max(player .maxHp, player .hp + 10);
}

关于javascript - 为什么对引用的引用不会更新原始对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33948052/

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