//함수 호출
function func() {
if(window === this) {
console.log("window === this");
}
}
func(); //결과 : window === this
//메소드 호출
let a = {
func : function () {
if (a === this) {
console.log("a === this");
}
}
}
a.func(); //결과 : a === this
//생성자 호출
let funcThis = null;
function Func() {
funcThis = this;
}
let a1 = Func();
if(funcThis === window) {
console.log('window'); //결과 : window
}
let a2 = new Func();
if(funcThis === a2) {
console.log('a2'); //결과 : a2
}
//**생성자는 빈 객체를 만듦 -> 객체 내에서 this는 만들어진 객체를 가르킴**
function Func() {
console.log(a);
}
let a = new Func(); //결과 : undefined
let a = {}
let b = {}
function func() {
switch(this) {
case a :
console.log('a');
break;
case b :
console.log('b');
break;
case window :
console.log('window');
break;
}
}
func(); //결과 : window
func.apply(a); //결과 : a
func.apply(b); //결과 : b
.
.
.
.
Reference