2013-06-12 3 views
0
내가 뭔가를 하나 개의 매개 변수와 fun을 위해 잘 작동하고

슬라이스 JS 함수의 인수

var confirmDelete = function (fun) { 
    if (confirm("Do you want to delete " + arguments[1])) { 
     $(arguments[2]).remove(); 
     fun(arguments[3]); 
    } 
    return false; 
} 

같은 공통의 확인 방법을 쓰고 싶어

,하지만 난 두 개 이상의 매개 변수에 맞게 원하는, 내가 어떻게 할 수 있습니까?

+2

두 번 같은 함수 뭔가를 다시 작성할 수 있습니다, 뭔가)'실종 옳지 않다 ' – elclanrs

+0

당신은 당신이'호출 할 때 fun''을 제외한 모든 매개 변수를 전달하고 싶은 건가요 재미'? –

+0

예, 나는 인자 [3], 인자 [4]로 fun를 호출하고 싶습니다 ..... – atu0830

답변

0

모든 javascript 함수 개체의 메서드는 apply입니다. apply은 주어진 컨텍스트와 주어진 인수를 사용하여 함수를 호출합니다.

var confirmDelete=function(fun) { 
    if(confirm("Do you want to delete "+ arguments[1])) { 
     // remove the first two elements in arguments, and use the resulting array as a new set of 
     // arguments to fun 
     fun.apply(this, Array.slice(arguments, 2)); 
    } 
} 
+0

'Array.prototype.slice'가되어서는 안됩니까? – bfavaretto

+1

사실,'Array.prototype.slice.call (arguments, 2)' – bfavaretto

+0

@bfavaretto : Firefox는 Array generics를 지원합니다 :-) 다른 브라우저는 없습니다! – Bergi

0

JavaScript에서는 원하는만큼 매개 변수를 전달할 수 있습니다.

전달하지 않으면 정의되지 않습니다. 이 같은

그래서 ... 당신이 할 수있는 일 : 또한 마법 arguments 변수 here에 대해 읽을 수 있습니다

var confirmDelete = function(arg1, arg2, arg3) { 
    if (typeof arg2 === 'undefined') { 
     arg2 = "default value for arg2"; 
    } 
    if (typeof arg3 === 'undefined') { 
     arg3 = "default value for arg3"; 
    } 
    // do more stuff... 
} 

.

0

당신은 당신의 구문을 확인

var confirmDelete = function fun(arg1, arg2) { 
    // number of parameter as your need 
    // TODO some stuff 
    fun(arg1 -1, arg2 +3); // call it recursively 
    return false; 
}