JS中apply call和bind的區別

2021-10-14 04:41:07 字數 621 閱讀 6246

在js中,這三者都是用來改變函式的this物件的指向的,他們有什麼樣的區別呢。

在說區別之前還是先總結一下三者的相似之處:

1、都是用來改變函式的this物件的指向的。

2、第乙個引數都是this要指向的物件。

3、都可以利用後續引數傳參。

那麼他們的區別在**的,先看乙個例子。

var xw = 

} var xh =

xw.say();

本身沒什麼好說的,顯示的肯定是小王 , 男 , 今年24。

那麼如何用xw的say方法來顯示xh的資料呢。

對於call可以這樣:

xw.say.call(xh);

而對於bind來說需要這樣:

xw.say.bind(xh)();

var xw = 

}var xh =

xw.say.call(xh,「實驗小學」,「六年級」);

xw.say.bind(xh,「實驗小學」,「六年級」)();

但是由於bind返回的仍然是乙個函式,所以我們還可以在呼叫的時候再進行傳參。

xw.say.bind(xh)(「實驗小學」,「六年級」);

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

如果第乙個傳入的引數是null,那麼,在函式體內的this會指向全域性物件,在瀏覽器中就是window 2 call 當採用call呼叫的時候 3 bind 和call很相似 區別在於bind方法返回值是函式以及bind接收的引數列表的使用。call 是把第二個及以後的引數作為 fn 方法的實參傳進...

深入理解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物件指向...