this의 바인딩

huni_·2022년 7월 4일
0

JS

목록 보기
11/27
post-custom-banner

EC(Execution Context)가 생성될 때마다 this의 바인딩이 일어나며 우선순위 순으로 나열해보면 다음과 같다.

  1. new 를 사용했을 때 해당 객체로 바인딩된다.
var name = "global";
function Func() {
  this.name = "Func";
  this.print = function f() { console.log(this.name); };
}
var a = new Func();
a.print(); // Func
  1. callapplybind 와 같은 명시적 바인딩을 사용했을 때 인자로 전달된 객체에 바인딩된다.
function func() {
  console.log(this.name);
}

var obj = { name: 'obj name' };
func.call(obj); // obj name
func.apply(obj); // obj name
(func.bind(obj))(); // obj name
  1. 객체의 메소드로 호출할 경우 해당 객체에 바인딩된다.
var obj = {
  name: 'obj name',
  print: function p() { console.log(this.name); }
};
obj.print(); // obj name
  1. 그 외의 경우
  • strict mode: undefined 로 초기화된다.
  • 일반: 브라우저라면 window 객체에 바인딩 된다.
profile
FrontEnd Developer
post-custom-banner

0개의 댓글