簡體   English   中英

如何使用名稱等於字符串的名稱定義javascript函數

[英]How to define a javascript function with a name equal to a string

假設我給了一個字符串,並且我想用該字符串的名稱定義一個函數。 我怎樣才能做到這一點?

更新:

我忘了提到我不想為屬性設置匿名函數,因為我也想從函數ie中動態獲取函數的名稱。 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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM