JavaScript(9)——call與apply

來源:互聯網
上載者:User

標籤:

call與apply

call和apply方法可以通過函數名稱來調用函數。有兩個參數

call()方法與apply()方法的作用相同,他們的區別僅在於接收參數的方式不同。

【call】

調用一個對象的一個方法,以另一個對象替換當前對象。

call()方法是與經典對象冒充方法最相似的方法。他的第一個參數用作this對象,其他參數都直接傳遞給函數自身。

對於call而言,第一個參數是內容物件,第二個參數是不同的函數參數。

call是通過參數列表來完成傳遞, 其他與apply沒有區別

【apply】

應用某一對象的一個方法,用另一個對象替換當前對象。

對於apply而言,有兩個參數,第一個是調用的上下文,第二個是參數數組,可以直接把argument傳進去。

【call與apply的用法與區別】

function sum(num1,num2){    return num1+num2;}function callSum1(num1,num2){    //使用sum這個函數來完成一次調用,調用的參數就是函數callSum1這個函數的參數    //apply的第二個參數代表一組參數數組    return sum.apply(this,argument);}function callSum2(num1,num2){    //第二個參數是數組    return sum.apply(this,[num1,num2]);     }function callSum3(num1,num2){    //通過參數列表來完成傳遞      return sum.call(this,num1,num2);}

如果直接傳入argument對象,或者包含函數中先接收到的也是一個數組,那麼使用apply()方法比較方便,否則,選擇call()更加合適。如果在不給函數傳遞參數的情況下,使用哪個方法都可以。

call()與apply()真正強大的地方是能夠擴充函數賴以啟動並執行範圍。使用call()(或apply())來擴充範圍的最大好處,就是對象不需要與方法有任何耦合關係。

JavaScript(9)——call與apply

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.