this 참조, this 키워드

(2021-06-15)

this , this 바인딩, call(), apply(), bind()


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의 복제본)를 만들어 반환함

JS 함수
   1. JS 함수   2. JS 함수 종류   3. Function 객체   4. JS 함수 인수   5. this 키워드   6. 화살표 함수 (arrow)   7. 중첩 함수 (nested)   8. 즉시실행함수 (IIFE)   9. 콜백 함수 (CallBack)   10. 클로저 (Closure)   11. 고차 함수  
JS 실행환경
   1. 실행 컨텍스트   2. 스코프   3. 변수 호이스팅   4. this 참조   5. 클로저   6. IIFE (즉시실행함수)   7. 모듈  
JS 객체
   1. JS 객체   2. JS 객체 구분   3. JS 객체의 생성 저장 접근   4. JS 클래스   5. 프로토타입 객체   6. 프라미스 객체   7. 일급 객체   8. 래퍼 객체   9. 콘솔 객체   10. this 참조   11. 이터레이터   12. 제너레이터   13. 범용 객체 (Object object)  


Copyrightⓒ written by 차재복 (Cha Jae Bok)               기술용어해설 후원
"본 웹사이트 내 모든 저작물은 원출처를 밝히는 한 자유롭게 사용(상업화포함) 가능합니다"