1. 程式人生 > >apply, call , bind

apply, call , bind

運行 yield 列表 沒有 ner 使用 this 原函數 返回

apply, call , bind
3個都是改變函數內部的this指向(改變函數運行時上下文而存在),它們三個第一個參數都是 this
apply 與 call 區別
1. 雖然它們2個第一個參數都是this,但是apply第二個參數是一個數組的 ,而 call 第二個元素開始是數組裏面的元素, 但是會立即執行 (列如)
1. const numbers = [5,481,56,89];
let maxInNumber = Math.max.apply( this, numbers );
let maxInNumber = Math.max.call( this, 5,484,56,89);
bind
它第二參數是接受的參數 列表, 不會去立即執行,返回一個改變上下文this函數的使用 , 原函數的this並沒有改變 , 依舊指向全局的window

但是在箭頭函數的情況下 apply , call 會失效
原因 1. 箭頭函數不可以被當作構造函數, 不可以使用new 這個命令 , 不然會拋出異常
2. 箭頭函數不可以使用arguments對象, 這個對象在函數體內是不存在的,如果想要使用Rest參數代替
3. 箭頭函數不可以用作Generator函數 , 不可以使用yield命令
4. 箭頭函數體內this對象就是定義時的對象 , 而不是使用的時候的對象

apply, call , bind