call apply bind

來源:互聯網
上載者:User

標籤:封裝   字元   bin   uil   內建   UI   text   cti   define   

在JavaScript中,callapplybindFunction對象內建的三個方法,這三個方法的主要作用是改變函數中的this指向。

callapplybind方法的共同點和區別:apply 、 call 、bind 三者都是用來改變函數的this對象的指向的;

apply 、 call 、bind 三者第一個參數都是this要指向的對象,也就是想指定的上下文(函數的每次調用都會擁有一個特殊值——本次調用的上下文(context)——這就是this關鍵字的值。);

apply 、 call 、bind 三者都可以利用後續參數傳參;

bind 是返回對應函數,便於稍後調用;apply 、call 則是立即調用 。

apply和call作用完全一樣,只是接受參數的方式不同,call是一個接一個,apply是數組形式(如果不是一個有效數組或者不是 arguments 對象,那麼將導致一個 TypeError)

a.call(thisObj,arg1,arg2...)

a代表一個方法

thisObj的取值有以下4種情況:
(1) 不傳,或者傳null,undefined, 函數中的this指向window對象
(2) 傳遞另一個函數的函數名,函數中的this指向這個函數的引用
(3) 傳遞字串、數值或布爾類型等基礎類型,函數中的this指向其對應的封裝對象,如 String、Number、Boolean
(4) 傳遞一個對象,函數中的this指向這個對象

  a.call(); //window

  a.call(null); //window

  a.call(undefined); //window

  a.call(1); //Numbera.call(‘‘); //String

  a.call(true); //Boolean

  a.call(b); //function b(){}

  a.call(c); //Object

bind是ES5新增的方法

bind方法會建立一個新函數,稱為綁定函數,當調用這個綁定函數時,綁定函數會以建立它時傳入 bind()方法的第一個參數作為 this,傳入 bind() 方法的第二個以及以後的參數加上綁定函數運行時本身的參數按照順序作為原函數的參數來調用原函數。

注意:bind方法的傳回值是函數

調用方式

a.bing(thisObj,arg1,arg2...)()  等價於  var fun = a,bind(thisObj,arg1,arg2...); fun();

 

call apply bind

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.