Heim >Web-Frontend >js-Tutorial >Wie rufe ich eine JavaScript-Funktion sicher aus einem String auf, ohne „eval()' zu verwenden?

Wie rufe ich eine JavaScript-Funktion sicher aus einem String auf, ohne „eval()' zu verwenden?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-29 07:37:30515Durchsuche

How to Safely Invoke a JavaScript Function from a String Without Using `eval()`?

Aufrufen eines Javascript-Funktionsaufrufs aus einer Zeichenfolge

Diese Frage befasst sich mit der Herausforderung der Konvertierung einer Zeichenfolge, die einen Funktionsaufruf darstellt, z. B. „Einstellungen“. .functionName '(' t.parentNode.id ')'", in einen tatsächlichen Funktionsaufruf. Das Ziel besteht darin, die Funktion so auszuführen, als ob die Zeichenfolge direkt als Funktionsaufruf eingegeben worden wäre, ohne eval() zu verwenden, wovon aus Sicherheitsgründen abgeraten wird.

Lösung:

Die bereitgestellte Lösung schlägt einen alternativen Ansatz vor, bei dem das Fensterobjekt genutzt wird, um einen Verweis auf die Funktion zu erhalten. Hier ist eine aktualisierte und detailliertere Erklärung:

<code class="javascript">// Store the function name extracted from the string as a variable
var functionName = settings.functionName;

// Check if the function exists in the global scope using window
if (typeof window[functionName] === 'function') {
  // If the function exists, invoke it with the specified argument
  window[functionName](t.parentNode.id);
}</code>

Beispiel:

Betrachten Sie das folgende Einstellungsobjekt:

<code class="javascript">window.settings = {
  functionName: 'clickedOnItem',
};</code>

Und die folgende Funktion Definition:

<code class="javascript">function clickedOnItem(nodeId) {
  // Function body
}</code>

Mit der obigen Lösung können wir die Funktion clickedOnItem mit dem Argument t.parentNode.id wie folgt aufrufen:

<code class="javascript">// Extract the function name from the settings object
var functionName = settings.functionName;

// Check if the function exists in the global scope
if (typeof window[functionName] === 'function') {
  // Invoke the function with the specified argument
  window[functionName](t.parentNode.id);
}</code>

Mit dieser Methode können wir Funktionen dynamisch aufrufen basierend auf einer String-Darstellung, ohne auf eval() zurückzugreifen oder die Sicherheit zu gefährden.

Das obige ist der detaillierte Inhalt vonWie rufe ich eine JavaScript-Funktion sicher aus einem String auf, ohne „eval()' zu verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn