>웹 프론트엔드 >JS 튜토리얼 >`eval()`을 사용하지 않고 문자열에서 JavaScript 함수를 안전하게 호출하는 방법은 무엇입니까?

`eval()`을 사용하지 않고 문자열에서 JavaScript 함수를 안전하게 호출하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-10-29 07:37:30483검색

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

문자열에서 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.