0
: 사용자 지정 특성을 읽을 수있는 가장 좋은 방법, 그리고 자바 스크립트의 실행 방법으로 변환 할 무엇사용자 정의 태그의 값에서 함수를 작성하는 속성 요소를 감안할 때
<div id='adiv' customAttr='myFuncToExecute'></div>
. 저는 현재 new Function()
생성자를 사용하고 있습니다 :
if ($('#adiv').attr('customAttr')) {
var myFuncV1 = new Function('return ' + $('#adiv').attr('customAttr') + '()');
var myFuncV2 = new Function($('#adiv').attr('customAttr'));
}
myFuncV1
myFuncV1()
로 실행 될 것입니다. 또한, 나는 이벤트 핸들러 바인딩에
myFuncV2
를 사용할 수 있어요 :
$('#adifferentdiv').click(myFuncV2);
이 내가 필요에 대한 작업을 수행하지만, new Function()
생성자를 사용하여 eval()
을 사용하는 것과 같습니다.
질문 : 스크립트의 다른 곳에서 사용되는 메서드 이름을 포함하는 사용자 지정 특성을 읽고 평가하는 데 더 좋은 방법이 있습니까?
도움을 미리 감사드립니다. 당신은, 예를 호출하기 전에 obj[$('#adiv').attr('customAttr')]
가 존재하는지 테스트 할 수 있지만
var obj = {someMethod: function(){...}};
obj[$('#adiv').attr('customAttr')]();
:
감사합니다. 나는 이것이 정확히 내가 찾고있는 것이라고 확신한다. 빠른 부작용 : 메서드가 매개 변수를 받아들이는 곳에서이 작업을 수행 할 수있는 방법이 있습니까? 나는 같은 것을 가정한다 : var obj = {someMethod : function (param1, param2) {...}};'? – Bic
여기서 * param1 *은 전역 변수가 아닌 변수의 이름을 나타내는 문자열입니다. 대괄호 표기법이있는 문자열을 사용하여 객체의 명명 된 속성에 액세스 할 수 있습니다. 전역 변수는 브라우저 (브라우저의 윈도우) 전역 속성으로 만들어진 특수한 경우입니다. 함수 실행 컨텍스트의 "변수 개체"또는 [* 환경 레코드 *] (http://ecma-international.org/ecma-262/5.1/#sec-10.2.1) 이후 다른 변수에는 해당하지 않습니다 직접 액세스 할 수 없습니다). – RobG