JS - 按名称调用函数(以对象表示法)
JS - Call function by name (in object notation)
我想清理一些旧代码并优化它,它经常使用相同的代码。 (只是要调用的函数名称不同)
我举了一个更简单的例子,不,我不写游戏。但是这个例子看起来更容易解释我的问题。
character.sleep(1);
character.changeName(name);
character.useItm(1423);
更简单的示例:
object.function(parameters)
目标是这样的:
myFunc(funcName,value) {
character.{funcName}(value);
}
$('.btn_sleep') { myfunc('sleep','1'); }
$('.btn_cName') { myfunc('changeName','Harold'); }
$('.btn_uItem') { myfunc('useItem','1423'); }
首先我考虑使用 eval(),因为没有用户输入会接近此函数。但我不喜欢这个想法,因为性能损失了。
然后我四处寻找替代方案,发现 window[] 和 new function() 作为解决方案。
但是当我想在对象表示法中按名称动态调用函数时,我不知道如何使用它。 (或者在更糟糕的情况下,当您必须从使用对象表示法调用的函数中获取 if 条件的结果时。)
有人能帮忙吗?
我知道如何动态调用函数的最好方法是使用括号表示法,因为它允许您使用变量设置对象路径
function myFunc(funcName,value) {
character[funcName](value);
}
myfunc('sleep','1');
我想清理一些旧代码并优化它,它经常使用相同的代码。 (只是要调用的函数名称不同)
我举了一个更简单的例子,不,我不写游戏。但是这个例子看起来更容易解释我的问题。
character.sleep(1);
character.changeName(name);
character.useItm(1423);
更简单的示例:
object.function(parameters)
目标是这样的:
myFunc(funcName,value) {
character.{funcName}(value);
}
$('.btn_sleep') { myfunc('sleep','1'); }
$('.btn_cName') { myfunc('changeName','Harold'); }
$('.btn_uItem') { myfunc('useItem','1423'); }
首先我考虑使用 eval(),因为没有用户输入会接近此函数。但我不喜欢这个想法,因为性能损失了。
然后我四处寻找替代方案,发现 window[] 和 new function() 作为解决方案。
但是当我想在对象表示法中按名称动态调用函数时,我不知道如何使用它。 (或者在更糟糕的情况下,当您必须从使用对象表示法调用的函数中获取 if 条件的结果时。)
有人能帮忙吗?
我知道如何动态调用函数的最好方法是使用括号表示法,因为它允许您使用变量设置对象路径
function myFunc(funcName,value) {
character[funcName](value);
}
myfunc('sleep','1');