JS中的apply call和bind的用法和區別

2021-10-23 03:53:43 字數 791 閱讀 4517

如果第乙個傳入的引數是null,那麼,在函式體內的this會指向全域性物件,在瀏覽器中就是window

2、call

當採用call呼叫的時候

3、bind

和call很相似

區別在於bind方法返回值是函式以及bind接收的引數列表的使用。call 是把第二個及以後的引數作為 fn 方法的實參傳進去,而 fn1 方法的實參實則是在 bind 中引數的基礎上再往後排。

bind 方法不會立即執行,而是返回乙個改變了上下文 this 後的函式。

根據**理解

function fn(name) 

var obj = {}

fn.call(obj) //fn函式中的this指向obj

console.log(fn.call(obj)) //undefined

console.log(obj) //

console.log(fn.call(obj, 'name')) //undefined

console.log(obj) //

console.log(obj) //

console.log(fn.bind(obj, 'name')) // fn(name) 返回值是乙個函式

console.log(obj) // {} 注意bind不會立即執行

console.log(fn.bind(obj, 'name')()) // fn(name) 返回值是乙個函式

console.log(obj) //

參考:

JS中apply call和bind的區別

在js中,這三者都是用來改變函式的this物件的指向的,他們有什麼樣的區別呢。在說區別之前還是先總結一下三者的相似之處 1 都是用來改變函式的this物件的指向的。2 第乙個引數都是this要指向的物件。3 都可以利用後續引數傳參。那麼他們的區別在 的,先看乙個例子。var xw var xh xw...

深入理解JS的apply call

主要解決以下幾個問題 function.call obj,param1 param2 paramn obj 這個物件將代替function類裡this物件 params 這個是乙個引數列表 定義乙個人類 function person name,age 定義乙個學生類 functionstudent...

apply call的區別和使用

let cfn function a1,a2,a3 cfn.call null,1,2,3 輸出 1 2 3call接受的引數不固定 從第二個引數開始往後,依次將作為引數傳遞給被呼叫函式 let afn function a1,a2,a3 他們的第乙個引數都是呼叫函式中 函式體內 的this物件指向...