如何根據函式名(字串形式)執行 JavaScript 函式?


可以透過兩種不同的方式呼叫儲存在變數中的字串形式的函式。第一種方法使用 window 物件方法,第二種方法使用 eval() 函式。

本教程將指導您學習如何使用其名稱(字串形式)來執行 JavaScript 函式。

使用 window[]() 方法

在這裡,要使用函式名(字串形式)執行函式,應使用以下語法將字串轉換為指標。

語法

var functionName = "string";
functionName = window[functionName]( parameters );

這裡我們將一個字串儲存為函式名,並使用 window[] 呼叫此值。

演算法

  • 步驟 1 − 定義一個函式來顯示輸出

  • 步驟 2 − 定義另一個函式,並將輸出函式的名稱作為字串賦值給全域性變數。如果需要,可以將引數傳遞給輸出函式。

  • 步驟 3 − 現在在 window[] 中呼叫此全域性變數,這將執行輸出函式。

示例

在下面的示例中,showOutput 是定義用於顯示輸出的函式。winObjFunc 定義為對儲存在全域性變數 strFunc 中的 showOutput 函式名執行 window[] 操作。使用上面的語法,呼叫 showOutput 函式並執行該函式。

<html> <body> <h2>Using the <i>window object</i> method to execute function with its string name.</h2> <p id="namStrDisp"></p> <script> function showOutput(output) { document.getElementById('namStrDisp').innerHTML = output; } function winObjFunc() { strFunc = "showOutput"; outStr = 'Output by the window object'; window[strFunc](outStr); } winObjFunc(); </script> </body> </html>

使用 eval() 方法

要使用函式名(字串形式)執行函式,可以使用 eval()。在這種情況下,函式的引數可以是語句、表示式、變數、現有物件的屬性或表示式序列。請遵循以下語法使用此方法。此方法的唯一缺點是其瀏覽器支援有限,並且被認為已過時。

語法

使用者可以遵循以下語法使用 eval() 方法呼叫函式。

eval( strFunction );

與 window 物件方法類似,字串函式名作為引數傳送到 eval() 方法。

示例

在下面的示例中,evalOutput 是定義的輸出函式。全域性變數 evalStr 將此函式及其引數作為字串儲存。使用上面解釋的語法,eval() 呼叫變數中的此字串值,我們得到執行的輸出函式。

<html> <body> <h2>Using the <i>eval()</i> method to execute function with its string name.</h2> <p id="evlStrDisp"></p> <script> function evalOutput(info) { document.getElementById('evlStrDisp').innerHTML = info; } function evalFunc() { evalStr = "evalOutput('eval method here')"; eval(evalStr); } evalFunc(); </script> </body> </html>

在本教程中,我們瞭解了兩種在已知函式名(字串形式)時執行 JavaScript 函式的方法。

window 物件方法是最常用的方法。eval() 方法已棄用,不推薦使用。

更新於:2022年8月23日

2K+ 次瀏覽

開啟您的 職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.