call()函數是用於調用函數用的,沒錯,就是函數名加一個括號,調用函數,但是它當然有自己特殊的地方了
例子:
(這個例子是基於你懂得了this的用法,因爲call()原理就是改變this的指向)
var a ={
c:function(){
this.name = 'betty';
},
};
var d={
name:'tony',
};
a.c.call(d);
alert(d.name);
我們建立了兩個對象 a和d ,然後我們對於a對象中的c函數使用call方法,參數爲對象d,然後alert(d.name);我們發現name爲betty了,顯然d對象中的name被改變了,當然是
a.c.call(d);改變的 ,它的意思是a對象調用了自己的成員函數c,但是c函數中的this指向了d,所以,給d對象中的name賦值爲betty
那麼與bind函數的區別是什麼呢
var a ={
c:function(){
this.name = 'betty';
},
};
var d={
name:'tony',
};
d.func = a.c.bind(d);
alert(d.name);
其實沒什麼區別,bind也是改變this的指向,call是直接執行函數一次就完事了,而bind會有一個返回值,返回一個改變了函數裏面this指向的新函數。