call apply bind的使用方法和區別

2022-04-20 14:11:18 字數 556 閱讀 7775

call

1.改變this指向   2.執行函式    3.傳參

var obj={};

function

fun(a,b)

fun(1,2); //

1,2,window

fun.call(obj,3,4); //

3,4,obj

1.改變this指向,執行函式,傳參(引數必須是陣列的形式)

var obj={};

function

fun(a,b)

fun(1,2);

bind

1.改變this指向  2.執行函式(bind方法不會立即執行函式,而是返回了乙個新的函式,新的函式呼叫的時候才會執行) 3.傳參(引數會傳遞到返回的函式中,例下面的3,4會傳遞到fun1中,即fun1(3,4))

var obj={};

function

fun(a,b)

fun(1,2);

var fun1=fun.bind(obj,3,4);

fun1();

聊聊call apply bind的故事

實際上它們真正的樣子是這樣的 它們幾個的作用都是改變this的指向。bind 與另外兩個的區別則是前者改變this,不立即呼叫函式 而後者改變this,立即呼叫函式。以下例子在非嚴格模式下,注釋的是各個情況this的指向 let test test.foo test.foo.call null,1,...

寫給新人的call apply bind

語法 1 fun.call thisarg arg1 arg2 thisarg fun函式執行時指定的this值,可能的值為 例如 123 456functiona functionb a.call b functionb 經常會看到這種使用情況 123 45function list list 1...

理解 call, apply, bind 的用法

call 方法使用乙個指定的this值和單獨給出的乙個或多個引數來呼叫乙個函式。function list list 1,2,3,4,5 1 陣列的所有方法都是掛在array的prototype上的,如圖 而類陣列物件本身是沒有這些方法的,當然也無法呼叫 那麼想在一些物件上呼叫這個物件本身沒有的方法...