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!