/* 全是undefined */
function printThis(){return this
}
var obj = {say(){console.log('obj.say',printThis())}
}
function funcB(){console.log('funcB',printThis());obj.say();
}
console.log('funcA',printThis())
obj.say()
funcB()
二. 隱式綁定
當以如下行駛執行一個函數時,this為隱式綁定;
a.b.func()
此時this指向點前面一個對象
賦值會改變隱式綁定this的指向
方法賦值給變量
class T {dotInvoke() {console.log('dotInvoke', this.sayThis())}sayThis() {return this}assignInvoke() {var sayThis = this.sayThis;console.log('assignInvoke', sayThis())}
}
var tt = new T();
tt.dotInvoke()// 指向T
tt.assignInvoke()// undefined
函數被賦值成方法
function printThis(){return this
}
var obj = {};
obj.say = printThis;
obj.say()/* 指向obj */