this?

  • this는 현재 실행 되는 코드가 어떤 object를 가리키고 있는지를 알려준다
  • 함수가 호출 되면 암묵적인 매개변수로 arguments와 this가 전달된다
  • this binding = 함수가 호출 될때 this에 바인딩 되는 객체가 동적으로 결정된다

함수 호출에 따른 this

  • 자바스크립트에서는 크게 4가지 함수 호출 방식이 존재 한다
1. 함수 호출
  • 글로벌 영역에서 선언한 전역함수 에서는 this가 당연히 전역 객체에 바인딩 되고 함수 내부에 선언된 내부 함수, 메소드 내부에 선언된 내부 함수, 콜백함수 상관 없이 내부 함수는 this가 전역 객체에 바인딩 된다
2. 메소드 호출
  • 메소드에서는 this가 해당 메소드를 호출한 객체에 바인딩 된다
3. 생성자 함수 호출
  • this가 해당 함수가 생성하는 객체에 바인딩 된다
4. apply/call/bind 호출
  • 명시적으로 this를 특정 객체에 바인딩하는 방법이다
  • 콜백함수는 this가 전역객체에 바인딩 되기 때문에 보통 콜백함수에서 콜백함수가 호출되는 객체의 property를 사용할때 해당 함수로 호출되는 객체를 명시해줄때 사용한다 (- 해당 객체에서 this를 다른 변수에 저장하고 내부함수에서 해당 변수를 사용해 property를 참조하는 방법도 있다)

😊