문자열에서 Javascript 함수 호출 호출
이 질문은 "settings"와 같은 함수 호출을 나타내는 문자열을 변환하는 문제를 다룹니다. .functionName '(' t.parentNode.id ')'"를 실제 함수 호출에 추가합니다. 목표는 보안 문제로 인해 권장되지 않는 eval()을 사용하지 않고 문자열이 함수 호출로 직접 입력된 것처럼 함수를 실행하는 것입니다.
해결책:
제공된 솔루션은 창 개체를 활용하여 함수에 대한 참조를 얻는 대체 접근 방식을 제안합니다. 업데이트된 자세한 설명은 다음과 같습니다.
<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>
예:
다음 설정 개체를 고려하세요.
<code class="javascript">window.settings = { functionName: 'clickedOnItem', };</code>
그리고 다음 기능 정의:
<code class="javascript">function clickedOnItem(nodeId) { // Function body }</code>
위 솔루션을 사용하면 다음과 같이 t.parentNode.id 인수를 사용하여 clickedOnItem 함수를 호출할 수 있습니다.
<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>
이 방법을 사용하면 함수를 동적으로 호출할 수 있습니다. eval()을 사용하거나 보안을 손상시키지 않고 문자열 표현을 기반으로 합니다.
위 내용은 `eval()`을 사용하지 않고 문자열에서 JavaScript 함수를 안전하게 호출하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!