有關JavaScript中call()和apply() 的一些理解_基礎知識

來源:互聯網
上載者:User

call()方法和apply()方法,在上層應用中用的不是很多,但在底層寫JS架構的時候卻常常看到。然後度娘穀哥一番,也發現好多達人寫出了自己的理解和筆記,但始終還是雲裡霧裡,於是去W3C學習了下

在W3C網上研究這兩個方法的時候,看到一個詞語,叫“對象冒充”,這個概念本人覺得還是挺重要的,讓我對這兩個方法理解起來更加直觀。

call()方法,看下官方給出的例子

function sayColor(sPrefix,sSuffix) {  alert(sPrefix + this.color + sSuffix);};var obj = new Object();obj.color = "blue";sayColor.call(obj, "The color is ", "a very nice color indeed.");

最後輸出的結果是“The color is blue, a very nice color indeed.”

call()方法就是將第一個參數替換方法中的this,然後後面的參數傳入該方法使用

apply()方法,同樣先看個官方給出的例子

function sayColor(sPrefix,sSuffix) {  alert(sPrefix + this.color + sSuffix);};var obj = new Object();obj.color = "blue";sayColor.apply(obj, new Array("The color is ", "a very nice color indeed."));

最後輸出的結果仍然是“The color is blue, a very nice color indeed.”

其實call()方法和apply()方法可以粗略的認為是差不多的,第一個參數都是替換方法中this關鍵字,只是後面傳給方法的傳參方式不同,call是直接對應,apply是利用數組,在數組中一一對應

以上這篇有關JavaScript中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.