js call()函數原理 以及與bind()函數的區別

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指向的新函數。

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章