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
Freigeben: 2024-10-29 07:37:30
Original
481 Leute haben es durchsucht

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>
Nach dem Login kopieren

Beispiel:

Betrachten Sie das folgende Einstellungsobjekt:

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

Und die folgende Funktion Definition:

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

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage