this的指向--只爲好記,要理論性回答的請自行延伸

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 方法)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章