? ? ?'前言 :
先來說一下this指向的問題 this指向在面試里面也會被經(jīng)常的被問到 在開發(fā)里面也會遇到一些this指向的問題
經(jīng)驗有限 不足之處還望各位大佬指出來。
1 當我們在一個script的便簽里面直接打印this的話。毫不疑問這個this會指向window ,就是當我們不對this進行任何操作或者綁定的話默認就是指向window

2 且看下面,我們來看一下,箭頭函數(shù)里面的this指向問題
?const?name='window';
??????const?obj={
??????????name:'我是對象的名字',
??????????showName(){//等同于 showName:function(){}
??????????????console.log(this.name)//打印出 '我是對象的名字'
??????????},
? ? ? ? showNameTest:()=>{console.log(this.name)}//這里會打印window
??????}
?obj.showName()//這里的this指向的就是obj這個對象? 既普通函數(shù)會對this做一個綁定既誰調(diào)用他 this就指向誰
obj.showNameTest()//這里的this會指向window 因為這里使用了箭頭函數(shù) 箭頭函數(shù)不會綁定this 箭頭函數(shù)里面的this只會和函數(shù)執(zhí)行時所在的區(qū)域有關?
那如果我們想用showName這個函數(shù)來打印 window 此時我們就可以借用 call
apply? bind這三個函數(shù)來處理了 這三個函數(shù)是用來改變this指向的?
obj.showName.call(window)//這里把window這個對象傳進去 使得函數(shù)內(nèi)部的this指向window
那我們可不可以?showNameTest()讓這個函數(shù)來打印obj的name呢 答案是不行的 通過這三個函數(shù)并沒有辦法改變箭頭函數(shù)里面的this指向