2012-04-25 3 views
3

애니메이션 플러그인의 설정으로 긴 JS Object를 전달하는 GUI를 만들었습니다. 설정 중 하나는 애니메이션이 완료되면 사용자가 함수를 호출 할 수있게 해줍니다. 불행히도 JS 객체에 문자열로 전달되어야합니다.EVAL을 피하고이 기능을 사용 하시겠습니까?

... [ 'functioncall()' ] ...... 

내 애니메이션 콜백 내에서이 문자열을 검색하고이를 함수로 실행하려고합니다. 두 예제 완벽하게 functioncall() 함수를 호출

var HookFunction=new Function(OS.path_jscall[index].path_jscall[0][i]); 
HookFunction(); 

:

첫 번째 시도는 내가 더욱 바람직한 접근 방식과 같이 설정을했습니다

eval(OS.path_jscall[index].path_jscall[0][i]) 

... 완벽하게 작동하지만, 평가 사용합니다. 비록 (이) functioncall() 전달하는 방법을 잘 모르겠습니다 ...

모든 것을 계속 참조합니다. 어떤 아이디어? 감사!

+0

가능한 복제본 [Javascript : "this"변수를 쉽게 설정하는 방법] (http://stackoverflow.com/questions/456967/javascript-how-to-set) -이 - 변수 - 쉽게) –

+0

"문자열로 JS 개체에 전달해야합니다"왜? – outis

답변

3

HookFunction이 이름이라고 가정하면,의 call() 또는 apply()

HookFunction.call(this,arg1,arg2,...,argN); 

//or 

HookFunction.apply(this,[arg1,arg2,...,argN]); 

기본적인 차이 중 하나를 수행 할 수 있습니다 2는 call()이 "this"와 그 뒤에 열거 된 인수 목록을받는 반면 apply()은 "this"및 인수 배열을받습니다.

+0

완벽하게 일했습니다! 고마워요, 문자열 호출에 'this'를 추가하는 추가 단계가 필요했습니다 :) 정말 멋지 네요! – Aaron

3

함수를 호출 할 때 .call을 사용하십시오. .callthis 변수에 첫 번째 매개 변수를 지정합니다.

var myFunction = function(arg1, arg2) { 
    alert(this); 
} 

myFunction.call(this, "arg1", "arg2"); 

두 번째 예제를 사용하여이 작업을 수행 할 수 있습니다 :

HookFunction.call(this); 
관련 문제