: 함수를 호출할 때 = 실행컨택스트가 생성될 때 , 함께 생성된다.
함수 vs 메서드?
함수란 독립적인 기능을 수행하는 것인 반면 메서드는 호출한 대상 객체에 관한 동작을 의미한다.
함수 실행 당시의 주변환경이 아닌, 해당 함수 호출 구문 앞에 점 또는 대괄호의 유무가 관건.
(없다면 this 에는 전역객체가 binding 된다.)
그렇다면 호출 당시의 환경을 그대로 상속 받을수는 없을까?
- Call method (호출 주체인 함수를 즉시 실행)
ex. func.call ({x:1}, 4,5,6) ; 첫번째 인자를 this로 바인딩.
- Apply method
ex. obj.method.apply ({a:4},[5,6]); 두 번째 인자를 배열로 받는다.
: 새로운 함수를 반환할 뿐 즉시 호출되지 않는다. name property 를 가진다. (bound)
: 실행 context 생성시 this binding 이 제거-> scope chain 상 가장 가까운 This에 접근 (간결하고 편리)