ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 항해3주차 - Node.js (32) This
    항해 2023. 1. 25. 14:41

    his란 JavaScript 예약어다.
    미래에 해당 객체의 개체가 될 아이들, 즉
    "상황에 따라 그때 그때 달라질 뭔가를 가르키기 위해서 사용하고 있다."

    기본적으로 자바스크립트에서의 this도 맥락은 같다.

    프로퍼티나 메서드가 자기를 참조 할 수 있게끔 인스턴스 생성 이후에 해당 인스턴스를 가르키기 위해서 사용한다.

    하지만 자바스크립트에서의 this는 실행 컨텍스트가 생성될 때 함께 결정된다.

    실행 컨텍스트는 함수를 호출 할 때 생성되므로, this는 함수를 "호출" 할 때 결정된다고 할 수 있다.

    그래서 어떤 방식으로 호출하냐에 따라 값이 달라진다고 함.

     

    this란 함수를 호출할 때 생성되는 실행 컨텍스트 객체다. this가 가리키는 대상은 어떻게 this가 호출되는지에 따라 다르다

    this가 가리키는 대상은 어떻게 this가 호출되는지에 따라 다르다. 아래 상황별로 this의 의미를 나눌 수 있다.

     

     전역 공간에서의 this : 전역 공간에서 this는 전역 객체를 가리킴: (this 콘솔에 찍으면 전역객체 나온다는 뜻)

     메서드로서 호출할 때 내부에서의 this : 메서드 내부에서의 this는 호출한 주체에 대한 정보임. 여기서 호출한 주체란 

                                                                       함수명(프로퍼티명) 바로 앞의 객체임. 즉 마지막 점 앞에 명시된 객체를 말함.

     

     함수로서 호출할 때 내부에서의 this: 그냥 함수로서 호출할 때는 this가 지정되지 않음

     콜백 함수 호출 시 내부에서의 this

     생성자 함수 내부에서의 this : 생성자 함수란 어떤 공통된 성질을 지니는 객체들을 생성하는 데 사용하는 함수다.

                                                        생성자를 클래스(class), 클래스를 통해 만든 객체를 인스턴스(instance)라고 함 

                                                        생성자 함수 내부에서의 this는 새로 만들 구체적인 인스턴스 자신이 됨

     

     

     

    ------------------------------아래와 같은 설명이 좀 더 이해하기 쉽다---------------------------------------

    https://nykim.work/71

    자바스크립트 내에서 this는 '누가 나를 불렀느냐'를 뜻한다고 한다.

    즉, 선언이 아닌 호출에 따라 달라진다는 것.

    그럼 각 상황별로 this가 어디에 바인딩되는지 알아보자.

     

    1. 단독으로 쓴 this

    2. 함수안에서 쓴 this

    3. 메서드 안에서 쓴 this

    4. 이벤트 핸들러 안에 쓴 this

    5. 생성자 안에서 쓴 this

    6. 명시적 바인딩을 한 this

    7. 화살표 함수로 쓴 this

     

    잠깐, 바인딩이란?

    • 식별자와 값을 연결하는 과정을 말한다.
    • 변수선언은 변수 이름과 확보된 메모리 공간의 주소를 바인딩하는 것이다.
    • this 바인딩은 this(키워드로 분류되지만 식별자의 역할을 한다.)와 this가 가리킬 객체를 바인딩하는 것이다.

    댓글

Designed by Tistory.