apply, call, bind在js中的區別

2021-07-15 08:15:06 字數 1003 閱讀 4891

在js中,這三種方法都是用來改變函式的this物件的指向的。

先看看相似點

那區別呢?

上**:

var xb = 

}var other =

xb.say(); ===> 結果 小冰,女

那麼如果我們想要用xb的say()方法輸出other的資料,要怎麼辦呢?

簡單的可以用:

1.   xb.say

.call(other);

2. xb.say

3. xb.say

.bind(other)();

現在來看傳引數的情況

上**(還是上面的例子,但是傳參):

var xb = 

}var other =

xb.say.call(other,'斯坦福','3')

// ====> 小東,男----斯坦福,3

// ====> 小東,男----sitanfu,third

bind()呢?

xb.say.bind(other,'斯坦福','3');

// 是不是跟call傳參很像

但是上面xb.say.bind(other,』斯坦福』,』3』),返回的其實還是乙個函式,並沒有執行

console.log(xb.say.bind(other));      // 我們可以把xb.say.bind(other);列印出來看看

// ===> 返回的是乙個函式 返回放在下一節**裡面

}

返回結果

function

(school,grade)

}

apply call bind 使用總結

參考 語法 語法 fun.call thisarg arg1 arg2 var a var b a.fn 接受的是乙個陣列var a var b a.fn 接受的是引數 b.call a,1,2 3var a var b a.fn b.bind a,1,2 以上code我們會發現並沒有輸出.bind...

apply,call,bind個人總結

首先他們是用來改變呼叫方法中this的指向的,而且他們都是function的prototype。分別為 function.prototype.call function.prototype.bind 引數1 thisarg 物件也就是需要指向this的物件 引數2 argsarray 陣列 會按對應...

手動實現apply call bind

window.a 1 定義乙個全域性變數 var obj 定義乙個物件用來繫結 var funct function b,c 定義乙個函式用來執行 funct 1,2 1 1 2 直接執行,相當於window.funct 1,2 this繫結於window base base window 傳遞繫結...