this的指向是在函數(shù)調(diào)用的時(shí)候確定下來的,this的指向大致可以分為五種.
1. 默認(rèn)綁定
默認(rèn)綁定一般發(fā)生在回調(diào)函數(shù),函數(shù)直接調(diào)用;
2. 隱式綁定
誰調(diào)用就是指向誰;
3. 顯示綁定call,Apply,bind
4. new綁定
5. ES6的箭頭函數(shù)
箭頭函數(shù)比較特殊,箭頭函數(shù)this為父作用域的this,不是調(diào)用時(shí)的this.要知道前四種方式都是調(diào)用時(shí)確定,也就是動態(tài)的,而箭頭函數(shù)的this指向是靜態(tài)的,聲明的時(shí)候就確定了下來.比較符合js的詞法作用域.
既然有5種this的綁定方式,那么肯定有優(yōu)先級的先后
箭頭函數(shù) -> new綁定 -> 顯示綁定call/bind/apply -> 隱式綁定 -> 默認(rèn)綁定