2014-12-29 4 views
0

이 코드가 작동하는 이유는 무엇입니까? 결국, null의 문맥에서 g를 호출합니다. 대충 말하면 함수 g를 객체 메쏘드 null로 호출 하시겠습니까?한 함수에서 다른 함수로 호출 전달

function f(a, b) { 
    g.apply(null, arguments); 
} 
+2

'g'가'this'를 사용하지 않으면'this'가'null'로 설정되고,'g'는'this'를 사용하지 않으면 그 값이 무엇이든 상관 없습니다. – elclanrs

답변

3

예, thisg의 신체 내에서 사용되지 않습니다 경우이 방법을 호출 할 괜찮아요.

외부 함수 (facade)에서 특정 구현으로 인수를 전달할 때 apply에 대한 대안이없는 경우가 있습니다. 이전 인수가 가변 인수 함수 인 경우 - call과 직접 호출에는 인수 목록이 필요합니다.

null 또는 undefined이 제공되고 비 엄격 모드에서 이와 같이 함수를 호출하면 전역 객체 (MDN)로 바뀝니다.

+0

정확하게 이해합니까? 이것은 필요하지 않습니다. 이 메소드의 사용에 대한 일련의 인수를 전달해야합니다. 메소드 구문에는 필수 매개 변수 인 "call context"가 있습니다. 따라서 null을 지정하십시오. 이것은 g 전역 객체의 경우와 동일합니다. – Aleksandr

+1

네, 맞습니다 - 함수가 엄격 모드에서 호출되지 않는 한. docs를 인용하기 : * ... 메소드가 비 엄격 모드 코드의 함수 인 경우 null 및 undefined가 전역 객체로 대체되고 원시 값이 boxed됩니다. * – raina77ow

+0

감사합니다. – Aleksandr

관련 문제