call,apply,bind都可以動態(tài)改變函數(shù)體內(nèi)部的this指向茄厘,只是用法不同矮冬。call接受連續(xù)參數(shù),apply接受數(shù)組參數(shù)蚕断,如
function add(a,b){
return a+b;
}
add.call(add, 5, 3); //8
add.apply(add, [5, 3]); //8
bind 接受的參數(shù)跟 call 一致欢伏,只是 bind 不會立即調(diào)用入挣,它會生成一個新的函數(shù)亿乳,你想什么時候調(diào)就什么時候調(diào)。如下代碼:
function add(a, b){
return a+b;
}
var foo1 = add.bind(add, 5,3);
foo1(); //8
var foo1 = add.bind(add, 5,3);
foo1(); //8