2011-09-30 2 views
2

하나의 함수에서 다른 함수로 모든 인수를 전달하고 this을 보내는 간단한 방법이 있습니까?.call과 .apply의 차이점

나는이 시도 : http://jsfiddle.net/v92Xr/

var f1 = function() { 
    f2.call(this, arguments); 
}; 
var f2 = function() { 
    console.log(arguments); 
}; 
f1("abc", "def", "hij"); 

을하지만 F1의 모든 인수가 F2 인수 0 적층되어 나에게 잎 :

f2->arguments[0] == f1->arguments 

좋아하고 내가 대신을 apply 방법을 실행할 때 작품 : http://jsfiddle.net/v92Xr/1/

var f1 = function() { 
    f2.apply(this, arguments); 
}; 
var f2 = function() { 
    console.log(arguments); 
}; 
f1("abc", "def", "hij"); 

callapply의 차이점은 무엇입니까?

답변

4

내가 방금 차이 자신을 발견했습니다 생각합니다.

callthis 개체에 대한 참조를 배치 할 매개 변수 목록의 시작 부분에 추가 매개 변수가 있다는 점을 제외하면 일반적으로 함수를 호출하는 것과 거의 같습니다.

apply도 첫 번째 매개 변수가 this 개체이지만 두 번째 매개 변수는 배열로 예상됩니다. 이 배열은 호출 된 함수가 기대하는 모든 인수를 제공하는 데 사용됩니다. 요소 0은 함수 인수 목록의 첫 번째 인수에 매핑되고 요소 1은 두 번째 인수에 매핑됩니다.