this는 함수 자신이나 함수의 렉시컬 스코프를 가리키는 레퍼런스가 아니다!
this는 실제로 함수 호출 시점에 바인딩 되며 무엇을 가리킬지는 전적으로 함수를 호출한 코드에 달렸다.
function foo() {
console.log(this.a);
}
var obj = {
a: 2,
foo: foo,
}
obj.foo(); // 2
function foo(a) {
this.a = a;
}
var bar = new foo(2);
console.log(bar.a); // 2
결국 new는 함수 호출 시 this를 새 객체와 바인딩 하는 방법이며 이것이 'new 바인딩' 이다.