call apply bind 返回的是一個修改後的函數。需要另外調用。 ...
call
var a={ name:'xuux', fn:function(a,b){ console.log(a+b);//3 console.log(this);//{name: "xuux", fn: ƒ} } } var b=a.fn; b.call(a,1,2);//傳入的參數要分別放入 console.log(b);//ƒ (a,b){console.log(a+b); console.log(this);}
apply
var a={ name:'xuux', fn:function(a,b){ console.log(a+b);//3 console.log(this);//{name: "xuux", fn: ƒ} } } var b=a.fn; b.apply(a,[1,2]);//傳入的參數用數組存放 console.log(b);//ƒ (a,b){console.log(a+b); console.log(this);}
bind 返回的是一個修改後的函數。需要另外調用。
var a={ name:'xuux', fn:function(a,b){ console.log(a+b);//3 console.log(this);//{name: "xuux", fn: ƒ} } } var b=a.fn; var c=b.bind(a,1);//傳入的參數按順序賦值 c(2);