作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 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_location
和 office_multiplier
变量的方法。办公室乘数引用这组变量:
var office_loc1 = .01,
office_loc2 = .02,
office_loc3 = .03,
office_loc4 = .04,
office_loc5 = .05,
这是我尝试更新其中一些函数的条件,以下是 if
条件的步骤:
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/
我是一名优秀的程序员,十分优秀!