>  기사  >  웹 프론트엔드  >  `eval`을 사용하지 않고 JavaScript에서 문자열을 함수 호출로 변환하는 방법은 무엇입니까?

`eval`을 사용하지 않고 JavaScript에서 문자열을 함수 호출로 변환하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-02 06:22:02702검색

How to Convert a String into a Function Call in JavaScript Without Using `eval`?

JavaScript에서 문자열을 함수 호출로 변환

질문

다음과 같이 함수 호출을 나타내는 문자열이 있습니다.

settings.functionName + '(' + t.parentNode.id + ')'

이 문자열을 실제 함수 호출로 변환하고 싶지만 eval을 사용하지 않고 싶습니다.

해결책

eval을 사용하는 대신 다음 코드를 사용할 수 있습니다.

var fn = window[settings.functionName];
if(typeof fn === 'function') {
    fn(t.parentNode.id);
}

이 코드:

  1. 전역 창 개체에 액세스하고 settings.functionName 속성을 키로 사용하여 함수에 대한 참조를 얻습니다.
  2. 얻은 값은 함수입니다.
  3. 함수인 경우 원하는 인수로 호출합니다.

다음 설정 개체를 고려하세요.

/* Somewhere: */
window.settings = {
  /* [..] Other settings */
  functionName: 'clickedOnItem'
  /* , [..] More settings */
};

코드 뒷부분에 다음 함수가 정의됩니다.

function clickedOnItem (nodeId) {
  /* Some cool event handling code here */
}

이제 솔루션에 제공된 코드를 사용하여 함수 호출을 만들 수 있습니다.

/* Even later */
var fn = window[settings.functionName]; 
if(typeof fn === 'function') {
    fn(t.parentNode.id);
}

이렇게 하면 t.parentNode.id를 인수로 사용하여 clickedOnItem 함수가 호출됩니다.

위 내용은 `eval`을 사용하지 않고 JavaScript에서 문자열을 함수 호출로 변환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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