다른 객체지향 언어에서의 this는 클래스로 생성한 인스턴스를 말하지만,
자바스크립트에서의 this는 어디에서나 사용될 수 있습니다.
console.log(this);
console.log(window);
console.log(this === window); //true
var func = function (x) {
console.log(this, x);
};
func(1); // Window { ... } 1 (함수는 독립 실행이 가능하므로 함수 호출의 this는 window)
var obj = {
method: func,
};
obj.method(2); // { method: f } 2
// (메서드는 자신을 호출한 대상에 대한 실행을 하므로, 메서드의 this는 메서드를 호출한 대상)
var obj1 = {
outer: function() {
console.log(this); // {outer: ƒ}
var innerFunc = function() {
console.log(this); // window
}
innerFunc();
var obj2 = {
innerMethod: innerFunc
};
obj2.innerMethod(); // console.log(this) = {innerMethod: ƒ}
}
};
obj1.outer();