[this] - 개념편

GY·2021년 10월 28일
0

[JS] 개념 정리

목록 보기
22/32
post-thumbnail

this?

this는 자신이 속한 객체, 혹은 생성할 인스턴스를 가리키는 자기참조 변수이다.

this는 왜 필요할까?

일반적으로

  • 객체의 메서드 내부
    - this : 메서드를 호출한 객체
  • 생성자 함수 내부
    - this : 생성자 함수가 생성할 인스턴스

자신이 속한 객체를 가리키기 위해 쓰인다.

객체를 이루는 프로퍼티와 메서드는 각각 상태와 동작을 담당한다.
메서드는 프로퍼티를 참조하고 이 상태를 변경하는데,
이를 위해서는 자신이 속한 객체를 참조할 수 있어야 한다.

객체리터럴에서는 이것이 가능하지만, 생성자 함수에서는 어렵다.

왜 생성자 함수에서는 this없이 자신을 가리키는 식별자를 참조하기 어려울까?

객체 리터럴

메서드 호출 시점에 객체가 생성되기 때문에, 참조하는 시점에 식별자에 이미 할당이 완료된다.
따라서 메서드 내부에서 메서드를 호출한 자기자신의 객체를 참조할 수 있다.

생성자 함수

프로퍼티, 메서드를 추가하려면 생성할 인스턴스를 참조할 수 있어야 한다.
그런데 이 인스턴스 생성을 하려면 생성자 함수가 필요하고,
생성자 함수를 만드려면 프로퍼티와 메서드를 추가해야 한다.

따라서 각 단계가 그 전단계가 완료가 되어야 값을 참조할 수 있기 때문에 this로 미래에 생성할 인스턴스를 바인딩해주는 것이다.

this의 값은 어떻게 결정될까

Java, C++과 같은 클래스 기반 언어에서 this는 늘 클래스가 생성하는 인스턴스를 가리킨다.
하지만 Javascript에서는 함수 호출 방식에 따라 this의 값이 동적으로 결정된다.

profile
Why?에서 시작해 How를 찾는 과정을 좋아합니다. 그 고민과 성장의 과정을 꾸준히 기록하고자 합니다.

0개의 댓글