(1)直接調(diào)用(默認(rèn)綁定)
this == window
注:在嚴(yán)格模式下此時的this指代undefined
(2)隱式綁定(對象.方法())
this指代調(diào)用方法的那個對象
(3)顯示綁定(call、apply崔赌、bind)
this指代 第一個的參數(shù)的對象
注:call和apply臨時性的只作用于這一次屹徘,bind永遠(yuǎn)綁定方法中的this,返回值就是綁定成功后的函數(shù)寺渗,但對原來的那個函數(shù)沒有任何影響丽惭,并且使用bind綁定后的函數(shù)再使用call和apply也不會改變this的指向岗仑,也就是說bind的優(yōu)先級高于call和apply定欧。
(4)new綁定
this指代將來要創(chuàng)建的那個對象
注:顯示綁定的優(yōu)先級最高,但是call和apply傳入的第一個參數(shù)是null和undefined怒竿,this的綁定會丟失砍鸠,this會變成window,如果第一個參數(shù)是基本類型(除null和undefined外)愧口,會先把基本類型包裝轉(zhuǎn)換成相應(yīng)的對象類型睦番。例如數(shù)字1包裝轉(zhuǎn)換為new Number(1);