假设我有一个字符串,我想用该字符串的名称定义一个函数。我怎样才能做到这一点?
更新:
我忘了提到我不想将匿名函数设置为属性,因为我还想从函数内部动态获取函数的名称,即。arguments.callee.name
假设我有一个字符串,我想用该字符串的名称定义一个函数。我怎样才能做到这一点?
更新:
我忘了提到我不想将匿名函数设置为属性,因为我还想从函数内部动态获取函数的名称,即。arguments.callee.name
像这样:
var functionName = "myfunction"
window[functionName] = function() {
// your function here
}
根据要求,也许这样的事情会起作用:
var myFunctionGenerator = function(name) {return function(message) {
alert("hi, this is a function named '" + name + "'. The parameter passed is '" + message + "'.");
}}
var myFunction = myFunctionGenerator('some function name');
myFunction('a parameter');
// hi, this is a function named 'some function name'. The parameter passed is 'a parameter'.
如果您声明函数,请使用eval()
. 只需键入您尝试执行的参数的字符串表示形式,例如:
eval("function name(){alert('a');}");
然后,您可以按照正常约定调用该方法,name();
.
如果您已经有了函数名称并想用字符串表示调用该函数,则可以使用该eval()
方法,尽管它并不总是性能最佳。你会有这个:
var fnName = "functionName";
var params = "param1";
var fnNameWithParams = "functionName("+params+")";
eval(fnNameWithParams);
更好的方法可能是:
var fnName = "functionName";
var params = "param1";
var fnToCall = window[fnName];
fnToCall(params);