toggle-toggle / javascript-basic

🌱우아한 테크코스 프론트엔드 자바스크립트 기초 스터디 입니다.
9 stars 0 forks source link

[this] this 바인딩에 대해서 아는대로 설명하세요. #23

Open jum0 opened 3 years ago

jum0 commented 3 years ago

제곧내

shinsehantan commented 3 years ago

식별자 역할을 하는 this와 객체를 묶는 것을 바인딩이라고 한다. 함수 호출 방식에 따라 4가지로 결정된다.

생성자 -> 명시적 -> 암시적 -> 기본 순으로 우선 순위를 가진다.

ddongule commented 3 years ago

바인딩은 식별자와 값을 연결하는 과정이다. JS 의 this는 함수가 호출되는 방식에 따라 this 바인딩이 동적으로 결정된다.

bucketHaneul commented 3 years ago

this 바인딩이란, this가 가리킬 객체를 정해주는 과정입니다. 자바스크립트에서 this는 함수가 어떻게 호출되는지에 따라, 즉 함수의 실행 컨텍스트에 따라 동적으로 this가 결정됩니다.

함수가 호출되는 방법으로는 크게 4가지가 있습니다.

  1. 일반 함수로 호출

    • 어떤 함수를 함수로서 호출했을 때는, 호출한 주체가 없기때문에(개발자가 코드로 호출) this가 지정되지 않습니다. 따라서 this가 지정되지 않았기에 this는 전역 객체를 가리킵니다.
  2. 메소드로 호출

    • this에는 호출한 주체에 대한 정보가 담긴다. 즉, 메서드로서 호출된 함수의 경우 해당 함수명 앞의 객체가 곧 this가 됩니다.
  3. 생성자 함수로 호출

    • 기존 함수에서 new 키워드를 사용하여 호출하면, 해당 함수는 생성자 함수로 동작합니다. 그리고 생성자 함수 안의 this는 생성 될 인스턴스 객체를 가리킵니다.
  4. apply/call/bind로 호출

    • this에 원하는 값을 바인딩하기 위해, 명시적으로 this를 바인딩하여 함수를 호출합니다. 세 방식 모두 this로 바인딩 하고 싶은 값을 첫번째 인자로 넣으면, 이후 함수의 this에 원하는 값이 바인딩 됩니다.
jum0 commented 3 years ago