2013-04-09 1 views
4

코드에서 다르게 수행 된 것을 보았지만 (빈 매개 변수) . call/.apply (일반) () 함수 실행. 물론. 매개 변수가없는 .call()/.apply() 괄호가있는 함수를 호출하는 경우

이것은

var func = function() { /* do whatever */ }; func.call(); func.apply(); 

예 간략화 오버 VERSUS
단지 간단한 괄호이다.

func(); 

어디서나 어떤 정보도 보지 못했습니다. 왜 params가 전달 될 때 호출/적용이 사용되는지 알 것입니다.

+3

@FeistyMango : 틀림없이 그 속임수가 아닙니다. – Jon

+0

어디서 그런 코드를 보았습니까? 나는 이것이 '비어 있음'을 확인하는 것이라고 생각 (그리고 대답)했다. 그러나 그것은 사실이 아니다. 내가 몇 가지 빠른 실험을 통해 말할 수있는 한, 그것은 무의미한 연습입니다. – Pointy

+0

예. 그는 전화 대 신청에 대한 혜택/이유를 묻습니다. 그것은 본질적으로 두 사람의 차이를 묻는 것과 같지 않습니까 ??? –

답변

6

func();으로 메서드를 호출하면 window 개체의 메서드 내에서 변수 this이 가리 킵니다.

여기서 call(...)/apply(...)을 사용할 때 메서드 호출에 전달 된 첫 번째 매개 변수는 메서드 내에서 this이됩니다. 인수를 전달하지 않으면 null 또는 undefined를 전달하면 thisbecome global object이됩니다.

+2

아니요, 'this'는 여전히 전역 객체를 가리킬 것입니다. – Bart

+1

바트가 정확합니다. 실제로 'this'는 명시 적으로 'null'또는 'undefined'를 전달할 때도 'window'가됩니다. "strict"모드에서는 작동하지만, 단지'func()'도'this'를'undefined'로 설정합니다. – Pointy

+1

@Bart 예 네가 맞다. https://developer.mozilla.org/en/docs/JavaScript/Reference/Global_Objects/Function/call –

관련 문제