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의 복제본)를 만들어 반환함
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
1.
2.
3.
4.
5.
6.
7.
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.