簡體   English   中英

當我不帶參數動態將其名稱作為字符串發送時,如何執行javascript函數

[英]how to execute javascript function when i send its name as string dynamically with out parameters

我想執行名稱動態作為字符串來的javascript函數。 Ansd我在執行功能時不需要傳遞任何參數。

請任何人指導我如何實現這一目標?

問候,卡梅什

一種簡單的方法

eval("SomeFunction()");

要么

var funcName = "SomeFunction";
var func == window[funcName];
func();

危險,但您可以使用eval(method_name+"()")

您在說“ eval()”嗎?

var foo = "alert('bar')";
eval(foo);

希望這可以幫助;

function a() { 
   console.log('yeah!'); 
}

var funcName = 'a'; // get function name

this[funcName]();

如果該函數是全局函數,則應在瀏覽器中執行window[funcName]()

使用eval是可想象的最糟糕的方法。 不惜一切代價避免這種情況。

您可以像這樣使用window[functionname]()

function myfunction() {
    alert('test');
}

var functionname = 'myfunction';
window[functionname]();

這樣,您還可以選擇添加參數

也許更安全的方法是執行以下操作(僅在此處使用偽代碼):

function executer(functionName)
{
  if (functionName === "blammo")
  {
    blammo();
  }
  else if (functionName === "kapow")
  {
    kapow();
  }
  else // unrecognized function name
  {
    // do something.
  }

您可以為此使用switch語句(似乎是一種更好的構造):

switch (functionName)
{
  case "blammo":
    blammo();
    break;

  case "kapow":
    kapow();
    break;

  default:
    // unrecognized function name.
}

您可以通過創建一個函數名稱數組,在該數組中搜索所需的函數名稱,然后執行該數組中的值來優化此功能。

暫無
暫無

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

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