This

이선민·2022년 1월 11일
0

This

this는 자신이 속한 객체 또는 자신이 생성할 인스턴스를 가리키는 참조 변수이고, 함수의 호출 방식에 따라 특정 객체를 바인딩 한다.


일반 함수에서와 화살표 함수에서 this의 다른점

자바스크립트의 내부 함수는 일반 함수, 메서드, 콜백 함수 어디에서 선언되었든지 this는 전역 객체(window)를 바인딩 한다.
일반 함수의 this는 전역을 가리키며, 화살표 함수의 this는 언제나 상위 스코프의 this를 가리킨다.

strict 모드에서 일반 함수 this는 undefined가 바인딩 된다.


Apply, Call, Bind 함수

  • Apply
    this를 바인딩 하면서 함수를 호출하는 것, 두 번째 인자가 배열
let exam = function(a, b, c) {
  return a + b + c;
};

exam.apply(null, [1, 2, 3]);
  • Call
    this를 바인딩 하면서 함수를 호출하지만, apply()의 두 번째 인자에서 배열 형태로 넘긴 것을 각각 하나의 인자로 넘긴다.
exam.call(null, 1, 2, 3);
  • Bind
    함수를 호출하는 것이 아닌 this가 바인딩 된 새로운 함수를 리턴한다.
let obj = {
  name: 'lsm',
  exam: function() {
    console.log(this.name);
  }
};

let obj2 = {
  name: 'm'
};

let exam2 = obj.exam.bind(obj2);
exam(); // 'm'

함수를 호출할 때 함수가 어떻게 호출되었는지에 따라 this에 바인딩 할 객체가 동적으로 결정된다.

0개의 댓글