javascript-arguments實現函數重載

來源:互聯網
上載者:User

一、arguments

物件導向的javascript,具備物件導向語言的特徵:抽象,利用這點,我們已經在之前的幾篇部落格中介紹過,對象的建立,封裝,和繼承,還有一個沒有涉及,就是多態。視頻看完了,總結中也一直沒有找到javascript中多態的知識。

多態即擁有相同的函數名,但是不同的類中表現不同的執行。在javascript中,從上篇部落格中可以看到,子類可以繼承父類,但是,並沒有改寫父類的方法,只是單純的調用。網上也尋找過,同樣是一樣的,javascript沒有多態。

但是在操作中,卻發現javascript一個有趣的現象:定義無參數,調用卻有參數。

functionbox()       // 我們這樣定義:{ return arguments[0]+'|'+arguments[1]; return arguments.length;} //卻這麼調用alert(box('aaa','34'));        // aaa34   (輸出參數)// 2  ——參數個數(length)

同樣,我們在調用繼承(call)的時候也可以在子類中這麼使用:call(this,pro,pro2)。

在javascript中函數的參數是沒有類型的,並且參數個數也是任意的,利用一個重要的對象:arguments編寫靈活的函數,這應該屬於函數重載的範疇吧,我姑且這麼理解。

二、arguments實現函數重載

知道了arguments這個對象,我們怎麼使用呢?受javascript本身是弱類型的指令碼語言的局限,javascript參數是沒有任何限制的,所以這裡實現的函數重載不想一般語言那麼強大,只可以根據參數個數不同進行選擇。

既然arguments可以接受傳進來的參數,那麼就可以根據傳進來的參數個數進行判斷,進行何種操作。例如,我們根據傳進來的參數個數來讀取某個節點的CSS樣式,或者設定該節點的樣式。

//設定CSSBase.prototype.css= function (attr, value) {for (var i = 0; i 

總結:javascript雖然只是一個指令碼語言,很多結構或者語言,特別是資料類型,不像c#,c++,java有著嚴謹的語言結構,格式要求,但是就其簡單易學的特點,足以讓javascript有廣泛的用途。最初涉及到javascript,也只是知道它可以協助html實現動態網頁面效果,但是在不斷的惡學習過程中,發現javascript真的是很實用的,它編寫簡單,但是可以供我們調用的功能很多,最初只是對它瞭解甚少,簡單的頁面製作發揮不了它的真實水平。跟著視頻做了一個頁面後,感受到了javascript就是動態串連CSS,html的一個出彩的橋樑。有了它,才可以將CSS,html做得更靈活。

javascript雖小,但是五髒俱全。函數,對象,BOM,DOM……這些東西每一個都是那麼的讓人喜歡,提供了我們想要操作html的幾乎所有方法。

有時,我們學習的太匆忙,忘記了對這個知識進行審視,忽略了很多原本就存在的東西,而去繞圈了。

聯繫我們

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