注意:this 的指向相當複雜,大部分情境只需要了解其中一種即可(95%)
傳統函式中的 this 只與調用方式有關
以下調用方法為simple call 因此會找到全域
就是在調用的前面沒有其他物件
var someone = '全域';
function callSomeone() {
console.log(this.someone);
}
callSomeone();
在調用的時候前面的物件是什麼,他This的指向就會是什麼!!!
因此下面是找到obj裡面的someone
var obj = {
someone: '物件',
callSomeone() {
console.log(this.someone);
}
}
obj.callSomeone();
而同樣如果遇到內外層的部分
也是看調用時前面物件是外層或是內層This就會指到哪裡
var wrapObj = {
someone: '外層物件',
callSomeone,
innerObj: {
someone: '內層物件',
callSomeone,
}
}
wrapObj.callSomeone(); //會找到外層
wrapObj.innerObj.callSomeone(); //會找到內層