call/appiy/bind存在原型上,函數是實例對象,所以可以訪問(繼承)
1.call
函數名.call(要修改的this,依次把函數調用需要的參數)
作用:
? ? ?1.調用函數
? ? ? 2.修改this
使用場景:借用構造函數繼承
2.apply
函數名.apply(要修改的this,以數組的形式把所需的參數依次傳遞)
作用:
? ? ?1.調用函數
? ? ?2.修改this
?使用常見:求數組的最大值
3.bind
函數名.bind(要修改的this.依次傳參);
作用
? ? 1.修改this
? ? 2.返回一個新的函數,這個函數不會被調用,需要再次手動的調用
使用場景
setInterval();
當我們需要修改this的函數,但是又不需要立即執行這個函數的時候,就使用bind修改this即可
下圖中,將this的指向從window改為obj