call
call 方法使用給定的 this 參數以及分別給定的參數來呼叫某個函數,接受一個可以被視為 this 的值,和一連串的參數。
1 | fun.call(thisArg[, arg1[, arg2[, ...]]]) |
簡單的範例:
1 | function add(a, b) { |
apply
call 方法使用給定的 this 參數以及分別給定的參數來呼叫某個函數,接受一個可以被視為 this 的值,和一個陣列形式的參數。
1 | fun.apply(thisArg, [argsArray]) |
簡單的範例:
1 | add.apply(null, [1, 2]); // 3 |
bind
bind 方法會建立一個新函式。該函式被呼叫時,會將 this 關鍵字設為給定的參數,並在呼叫時,帶入給定順序的參數。
1 | fun.bind(thisArg[, arg1[, arg2[, ...]]]) |
簡單的範例:
1 | function add(a, b) { |
差異
call和apply方法會回傳 function 執行的結果。bind方法會回傳綁定this後原來的函數。
關於 this 值
傳入的 this 決定函式所指向的 this。若這個函數是在非嚴格模式(non-strict mode)下,null、undefined 將會被置換成全域變數。
1 | const foo = { |