javascript替代严格评估
javascript alternative to strict evaluation
本文关键字:评估 javascript 更新时间:2023-09-26
我正在制作一个javascript游戏,具有多个级别,存储在json中。加载时,我运行一个函数来"解析"级别对象,方法是用默认值替换不存在的值,或者用对象替换一些值,例如:
//i is the variable I use to loop through the enemies
if (typeof(level.enemies[i].life)=="undefined") {
level.enemies[i].life=100;
}
if (typeof(level.enemies[i].follow)=="number") {
level.enemies[i].follow=level.enemies[level.enemies[i].follow];
// replace the number of the enemy,
// by a reference to the actual enemy.
}
问题是,在整个函数中,我有很多类似的"如果",我想知道我是否可以以某种方式将它们简化为一个函数,这样我就可以做到这一点:
replaceByType(level.enemies[i].life,"undefined",100);
replaceByType(level.enemies[i].follow,"number",level.enemies[level.enemies[i].follow]);
遗憾的是,我不知道如何做到这一点,因为他们无法通过引用传递变量(除了对象)。也许还有其他方法可以简化我的代码?
我想你想要这样的东西:
replaceIfAbsent(level.enemies[i], "life", 100);
function replaceIfAbsent(obj, property, newVal){
if (typeof obj[property] === "undefined")
obj[property] = newVal;
}
或者为什么不同时做多个属性:
function replaceIfAbsent(obj, properties){
for (var prop in properties)
if (typeof obj[prop.name] === "undefined")
obj[prop.name] = prop.value;
}
replaceIfAbsent(level.enemies[i], [{name: "life", value: 100}, {name: "number", value: 12}]);
你在用jQuery吗?如果是这样,你可以这样做:
$.extend(level.enemies[i], {"life": 100, "number": 12});
由于可以通过引用传递对象,因此可以传递要替换的对象的属性。
function replaceByType(obj, property, type, value) {
if(typeof obj[property] === type) {
obj[property] = value;
}
}
你几乎可以随心所欲地称之为:
replaceByType(level.enemies[i], "life", "undefined", 100);
replaceByType(level.enemies[i], "follow", "number", level.enemies[level.enemies[i].follow]);
Pass anonymous functions:
function replaceByType(test, pass, fail){
if(test()) return pass;
else return fail;
}
replaceByType(function(){return level.enemies[i].life},"undefined",100);
这会将评估推迟到replaceByType
内部。
相关文章:
- 在WebView iOS中评估Javascript
- Webpack:是否可以在编译时评估javascript表达式
- Rhino 1.5 R5在查找数组差异时未正确评估JavaScript
- 评估JavaScript中给出布尔表达式的字符串
- 是否有任何库,或者是否可以在php中评估javascript
- 在 jsf/primefaces 组件中评估 javascript 结果
- 如何从Windows上的Emacs中评估javascript缓冲区(通过node.js)
- 评估 JavaScript 中的单选按钮
- 在 NodeJS repl 中逐个表达式地评估 Javascript 文件
- 在评估 javascript 时设置 this 指针
- 如何在使用 eval() 评估 JavaScript 时将回调函数定义作为参数传递
- 获取并评估javascript——为什么不起作用
- Rhino在Java中评估javascript对象
- Qt评估JavaScript问题
- 如何使用Ajax加载来评估javascript代码
- WKWebView评估JavaScript返回值
- 为什么在参数传递过程中未评估javascript哈希对象
- 在使用javax.script.ScriptEngine对象评估javaScript代码后返回布尔值
- Birt报告引擎.评估Javascript表达式时出错
- 评估Javascript时,在UIWebview中启用方向