1. this 참조
ㅇ 함수가 호출되는 그 순간에, 그 함수가 속해 있던 객체의 참조를 가리킴
- 따라서, `호출하는 장소` 또는 `호출하는 방법(문맥)`에 따라 그 내용이 바뀌는 변수 임
2. [자바스크립트] this가 가리키는 객체
ㅇ 최상위레벨 (함수의 바깥에 있는 this) 일 때, => `전역 객체`를 가리킴
ㅇ 함수 (함수의 내부에 있는 this) 일 때, => `전역 객체`를 가리킴
ㅇ 이벤트 처리기 내 this 일 때, => `이벤트가 발생한 요소 객체`를 가리킴
ㅇ 생성자 내 this 일 때, => `그 생성자로 생성한 객체`를 가리킴
ㅇ 메소드 내 this 일 때, => `해당 메소드를 호출한 객체(= 리시버 객체)`를 가리킴
ㅇ call/apply 메소드 일 때, => `인수로 지정된 객체`를 명시적으로 가리키게 함
3. [자바스크립트] 명시적인 this 바인딩
ㅇ apply 메소드, call 메소드, bind 메소드를 통해,
- this 바인딩을 명시적으로 지정 가능
ㅇ call()/apply() 메소드
- 함수의 매개변수를 이용한 명시적인 this 바인딩을 통해,
. 해당 함수를 실행시키는 메소드
- 구문형식
. func.call(that [,arg1 [,arg2 [,...]]]) : (매개변수 열거 형태)
. func.apply(that [,arg_arr]) : (매개변수 배열 형태)
- 구문 내 항목 설명
. func : 실행 함수 객체
. that : func 함수 내 this 키워드가 가리키게 되는 객체
. arg1,arg2, ... : func 함수에 전달될 매개변수들
. 한편, 매개변수에 null을 전달하면, 전역 객체가 건네진 것으로 간주됨
. arg_arr : func 함수에 전달될 매개변수 배열
ㅇ bind() 메소드
- 함수의 매개변수를 이용한 명시적인 this 바인딩을 통해,
. 지목된(넘겨준) 객체에 바인딩될 함수를 바인드시켜,
. 새로운 함수를 반환하는 메소드
- 구문형식 : func.bind(that, [,arg1 [,arg2 [,...]]])
- 구문 내 항목 설명
. func : 바인딩 함수
. that : func 내 this 키워드가 매개변수로 넘겨진 객체 that을 가리킴
. arg1,arg2, ... : 함수에 전달될 매개변수들
- 반환값
. 전달된 객체 that을, 함수 내 this 키워드로 설정시키고,
. 뒤이어 매개변수들이 있다면, 이들(arg1,arg2, ...)을 통상의 함수 처럼 적용시키고,
. 새롭게 함수(func의 복제본)를 만들어 반환함