[FE/JavaScript] this의 바인딩 우선순위

waterglasses·2021년 9월 28일
0

자바스크립트

목록 보기
6/16
post-thumbnail

📌 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

2. call, apply, bind와 같은 명시적 바인딩을 사용했을 때, 인자로 전달된 객체에 바인딩된다.

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

call, bind, apply 세가지 함수는 this의 값이 어떤 값이 사용되야하는지 명확할때 사용하는 방식이다.

3. 객체의 메소드로 호출할 경우 해당 객체에 바인딩된다.

var obj = {
  name: 'obj name',
  print: function p() { console.log(this.name); }
};
obj.print(); // obj name

4. strict mode
undefined로 초기화된다.

5. 일반
window객체에 바인딩된다.

출처

자바스크립트 this 바인딩 우선순위
this의 바인딩

profile
매 순간 성장하는 개발자가 되려고 노력하고 있습니다.

0개의 댓글