JS this

Younchong·2021년 11월 3일
0

this

함수호출시 자동으로 암묵적으로 전달되는 값 this는 함수가 어떻게 호출되는지에 따라 binding될 객체가 동적으로 정해진다.

  1. 일반 함수 호출
  2. Dot Notation (메소드 호출)
  3. 생성자 함수 호출
  4. call, apply, bind 이용

1. 일반함수 호출

두 가지로 나뉜다.

  • use strict 사용시
    this 는 undefined가 됩니다.
  • use strict 사용X
    this는 전역객체에 바인딩된다.

2. Dot Notation(메소드 호출)

해당 메소드를 호출한 객체에 바인딩된다.
즉, 점(.)앞에 객체를 this가 참조한다.
하지만 함수가 호출되는 것인지 정확히 판단해야 한다.

3. 생성자함수 호출

생성자 함수에 바인딩 된다.
정확히는 생성자 함수가 만든 빈 객체를 참조한다.

4. call,apply,bind

this를 특정객체에 명시적으로 바인딩하는 방법으로, 함수의 메소드이다.

  • call
    call(this, arg1, arg2 …) 첫번째 인자로 this가 들어가고 나머지는 개별인자들.
    그리고, call은 함수를 호출한다.
  • apply
    apply(this, [arg1, arg2…]) 첫인자로 this 두번째는 배열을 인자로 받는다.
    동일하게 함수가 호출된다.
  • bind
    bind(this, arg1, arg2…) 인자를 받는것은 call과 동일.
    함수를 반환한다.

5. arrow function에서 this

arrow function 내에서는 일반함수와 달리 고유한 this를 가지고 있지 않는다.
이때 arrow function 을 가지고 있는 함수, 즉 arrow function의 바로 상위 컨텍스트에 있는 함수의 this를 가져온다. (외부 렉시컬 환경에서 찾아 옴)
-> 별개의 this가 만들어지는 걸 원하지 않을때 사용.
하지만 arguments 사용못함, new 와 함께 사용불가(this가 없기때문에)

0개의 댓글