this 바인딩

Bora Im·2020년 3월 16일
0

http://jeonghwan-kim.github.io/2017/10/22/js-context-binding.html
https://github.com/kdo0129/Javascript-study/blob/master/this.md

기본 바인딩 (Default binding)
전역 this 는 기본적으로 window !

  • 함수 호출부에서 엄격모드 디버깅시 this 는 undefined 지만,
    함수 실행부에서 this 가 결정됐기 때문에 실행에는 문제없음.

암시적 바인딩 (Implicit binding)
객체의 프로퍼티를 통한 함수 호출.

var name = "a";
function f1() {
    console.log(this.name);
}
f1(); // a

var obj = {
    name: "b",
    f2: f1
};
obj.f2(); // b

예외1. 객체를 참조시킨 경우 다시 전역을 바라봄.

var f3 = obj.f2;
f3(); // a

예외2. 객체를 참조시킨 경우 다시 전역을 바라봄.

setTimeout(obj.f2, 1000); // a

명시적 바인딩 (Explicit binding)

call(), apply(), bind()

call, apply : 객체를 명시.

f1.call(obj); // b

setTimeout 을 쓰든 다른 변수에 참조시키든 객체 obj 를 바라봄.

공부하면서 배운것

  • 온라인 코드 편집기에서는 전역 window 바라보지 않음.
  • setTimeout 1번째 인자로 html 코드를 넣으면 실행되지 않음. 함수로!
  • 즉시실행함수 에서 에러가 나면 상단에 세미콜론(;) 닫히지 않은것.

0개의 댓글