gpt4 book ai didi

javascript - 如何在没有状态变量的情况下更新函数表达式?

转载 作者:行者123 更新时间:2023-11-28 18:02:31 25 4
gpt4 key购买 nike

我正在使用 jquery 创建游戏,并且通过单击按钮创建播放器。这是我用来保存其信息的函数表达式:

var getPlayerData = function() {
return {
name: $("#name").val(),//get name from input
office_name: $("#office-name").val(), //get name from input
score: parseInt($('#score').text(), 10), //players startwith 1k HC
office_location: "office_loc1", //set Player's office
office_multiplier: office_loc1, // Set Players office multiplier
notified: false,
projects_completed: 0
};
};

然后我在其他函数中运行此函数来访问玩家的变量,如下所示:

$('#create-player').click(function startProject() {
getPlayerData();
});

我需要一种使用条件更新 office_locationoffice_multiplier 变量的方法。办公室乘数引用这组变量:

var office_loc1 = .01,
office_loc2 = .02,
office_loc3 = .03,
office_loc4 = .04,
office_loc5 = .05,

这是我尝试更新其中一些函数的条件,以下是 if 条件的步骤:

  1. 从 html 获取分数,检查它是否 > 0 &&
  2. 检查乘数是否 = office_loc1 变量 &&
  3. 检查player_notified是否= false

if (parseInt($('#score').text(), 10) > 0 && getPlayerData().office_multiplier === office_loc1 && getPlayerData().notified === false){ }

条件句中需要注意的关键部分是:

//upgrade players office and notify them
getPlayerData().office_location = "office_loc2";
getPlayerData().office_multiplier = office_loc2;
getPlayerData().notified = true;

但是,这实际上不会更新变量。有人对此有什么想法吗?

谢谢!

最佳答案

每次调用 getPlayerData 时,您都会创建一个新的播放器对象实例

如果它是一个只读对象,那不会有问题,但是一旦你尝试改变它的任何属性,一旦你调用getPlayerData(),你就会丢失更新的值再次。

您应该将playerData保留为实例变量,然后您可以通过代码访问。

var playerData = getPlayerData();

-------------编辑-------------

定义 getPlayerData 函数后,您将创建一个 var playerData。像这样:

var getPlayerData = function() {
return {
name: $("#name").val(),//get name from input
office_name: $("#office-name").val(), //get name from input
score: parseInt($('#score').text(), 10), //players startwith 1k HC
office_location: "office_loc1", //set Player's office
office_multiplier: office_loc1, // Set Players office multiplier
notified: false,
projects_completed: 0
};
};
var playerData = getPlayerData();

然后,在您要调用 getPlayerData() 的每个地方,您都使用 playerData 来代替。

关于javascript - 如何在没有状态变量的情况下更新函数表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43284973/

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