1.普通函數的this指向window;
function fn(){console.log(this)}
fn()
2.普通對象的this指向window;
3.箭頭函數的this是繼承外面的環境;
let obj1={
a:111,
fn:function(){
alert(this);
}
}
obj1.fn();
//對象裏面的普通函數的this指向調用函數的對象,指向obj1;
let obj1={
a:111,
fn:function(){
setTimeout(()=>{
alert(this);
});
}
}
obj1.fn();
//箭頭函數因爲繼承外面的環境,所以這裏的this同樣指向obj1;
let obj1={
a:111,
fn: () => {
setTimeout(()=>{
alert(this);
});
}
}
obj1.fn();
//箭頭函數是繼承外面的環境,只要遇到箭頭函數就要再往它的上一層找被調用的對象,所以這裏的this指向調用obj1的對象,即window;
4. call 和 apply 兩個主要用途就是
1)改變 this 的指向(把 this 從對象2 指向到對象1 )
2)方法借用( 對象1沒有 fn ,只是借用 對象2 方法)