2011-08-15 4 views
3

나는 몇 가지 코드에서 이것을 보았다자바 스크립트는 대괄호로 메소드에 액세스합니까?

이 작업을 수행하는 방법

var _0xdf50x7 = document['createElement']('form');

? 이것은 객체의 메서드가 배열의 요소처럼 액세스 될 수 있다는 것을 의미합니까? createElement() 방법부터

+1

이 형식은 일반적으로 메소드 이름이 변수에있을 때 사용됩니다. 'var m = some_condition? 'm1': 'm2'; o [m](); ' –

답변

5

document 객체의 member이다, 그것은 사용하여 액세스 할 수 있습니다 dot notation :

var form = document.createElement("form"); 

또는 bracket notation :

var form = document["createElement"]("form"); 

이 유용 할 수있는 경우의 이름 호출 할 메소드는 변수에 저장됩니다.

var methodName = "createElement"; 
var form = document[methodName]("form"); 

실제 호출 방법이 외부 조건에 달려있는 경우에도 사용할 수 있습니다. 다음은 (고안된) 예입니다 :

function createNode(str, isTextNode) 
{ 
    return document[isTextNode ? "createTextNode" : "createElement"](str); 
} 
+0

대괄호를 사용하는 이유는 무엇입니까? – mowwwalker

+1

@user, 때로는 호출 할 메소드를 계산해야하고'if' 문을 남겨두기를 원할 때 유용합니다 (메소드 이름이 변수에 저장되어있는 경우 다른 함수가 가리키는 것처럼 유용합니다). –

+1

주어진 예제에서와 같이 대괄호 안에 문자열 리터럴을 사용하려는 경우 괄호 구문은 도움이되지 않지만 함수 이름이 변수에 있거나 원하는 조건을 적용하려는 경우 유용합니다 어떤 함수, 예를 들어'document [someFunction]();'또는'document [someCondition? "someFunction": "someOtherFunction"](); ' – nnnnnn

관련 문제