2011-01-20 2 views

답변

3

당신은 또 다른 (익명) 함수를 호출 할 수 있습니다 : 그런데

foo(function() { 
    validation('foobar'); 
}); 

를, ECMA 스크립트의 실제 "포인터"가없는, 그것을 참조 상점입니다. 난 당신이 상위 함수에 (A funarg = functional argument 통과) 교육 이유로 이런 식으로하고있는 것 같아요,하지만 당신은에 모든 일을 단순화 할 수 있습니다 : 난 ... 당신이 shouldn 볼

validation('foobar' + (+new Date())); 
+0

'시간'을 검증 방법에 전달하는 방법을 보여 주어야한다고 생각합니다. –

1

아 'T는 하나라고하지만 시도 할 수도를 사용

eval("func(\"foobar"+time+"\")"); 
+0

'eval()'을 사용하는 것은 매우 나쁜 습관으로 여겨지고 있습니다. 새로운 스코프 (컨텍스트)를 만드는 것이 다소 느리며, 런타임시 코드를 평가하는 보안 위험이 항상 있습니다. – jAndy

4

무엇에 대해 :

function foo(str, func) { 
    var time = new Date().getTime(); 
    // do some other stuff 
    func(str + time); 
} 
function validation(elementName) { 
    // do stuff 
} 
foo("foobar", validation); 
1

자바 스크립트 유연한, 여기 태닝을 사용하는 또 다른 방법이 있다는이기 때문에.

function createFoo(string) { 
    return function(aFunction) { 
     var time = new Date().getTime(); 
     // .. 
     aFunction(string + time); 
    }; 
} 

var foobar = createFoo("foobar"); 
foobar(validation); 
1

foo 매개 변수로 함수 이름과 해당 함수의 인수 배열을 보내면 어떨까요?

 
function foo(func,funcArgs){ 
    func.apply({},[new Date().getTime()].concat(funcArgs)); 
} 
function validate(arguments){ 
} 
//then you could pass anything to the validate "pointer" 
foo(validate,[argument1,argument2,/*...*/argumentn]);