首頁  >  文章  >  web前端  >  如何在 JavaScript 中建立具有運行時確定名稱的函數(無需 Eval)?

如何在 JavaScript 中建立具有運行時確定名稱的函數(無需 Eval)?

Linda Hamilton
Linda Hamilton原創
2024-11-12 08:34:01308瀏覽

How to Create Functions with Runtime-Determined Names in JavaScript (Without Eval)?

使用運行時確定的名稱建立函數(不含Eval)

在JavaScript 中,使用運行時確定的名稱建立函數在ECMAScript 2015 中是可行的後來,利用兩個關鍵功能:匿名函數表達式和計算屬性

ES2015 解決方案:

在ES2015 中,分配給物件屬性的匿名函數表達式繼承該屬性的名稱。這使我們能夠:

const dynamicName = "foo" + Math.floor(Math.random() * 1000);
const obj = {
  [dynamicName]() {
    throw new Error();
  },
};
const f = obj[dynamicName];

// Demonstrate function's name property
console.log("Function's `name` property: " + f.name);

// Exception handling reveals the name in stack traces
try {
  f();
} catch (e) {
  console.log(e.stack);
}

在此程式碼中:

  • dynamicName 動態決定函數的名稱。
  • obj 是一個具有名為dynamicName 屬性的物件。
  • 分配給dynamicName屬性的匿名函數表達式間接繼承了

相容性說明:

請注意,雖然所有現代瀏覽器都實作了該功能,但Edge 和Safari 不會在堆疊追蹤中顯示分配的名稱。

以上是如何在 JavaScript 中建立具有運行時確定名稱的函數(無需 Eval)?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn