首頁 > web前端 > js教程 > 主體

如何在 JavaScript 中將字串轉換為函數呼叫而不使用'eval”?

Mary-Kate Olsen
發布: 2024-11-02 06:22:02
原創
701 人瀏覽過

How to Convert a String into a Function Call in JavaScript Without Using `eval`?

在JavaScript 中將字串轉換為函數呼叫

問題

您有一個表示函數呼叫的字串,例如:

settings.functionName + '(' + t.parentNode.id + ')'
登入後複製

您想要將此字串轉換為實際的函數調用,但不使用eval。

解決方案

您可以使用以下程式碼來取代使用eval:

var fn = window[settings.functionName];
if(typeof fn === 'function') {
    fn(t.parentNode.id);
}
登入後複製

此程式碼:

  1. 透過存取全域視窗物件並使用settings.functionName 屬性作為鍵來取得函數的參考。
  2. 檢查是否得到的值是一個函數。
  3. 如果它是一個函數,則使用所需的參數來呼叫它。

範例

考慮以下設定物件:

/* Somewhere: */
window.settings = {
  /* [..] Other settings */
  functionName: 'clickedOnItem'
  /* , [..] More settings */
};
登入後複製

在程式碼的後面,定義了以下函數:

function clickedOnItem (nodeId) {
  /* Some cool event handling code here */
}
登入後複製

現在,您可以使用解決方案中提供的程式碼來進行函數呼叫:

/* Even later */
var fn = window[settings.functionName]; 
if(typeof fn === 'function') {
    fn(t.parentNode.id);
}
登入後複製

這將導致以t.parentNode.id 作為參數呼叫clickedOnItem 函數。

以上是如何在 JavaScript 中將字串轉換為函數呼叫而不使用'eval”?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!