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 !
암시적 바인딩 (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 를 바라봄.
공부하면서 배운것