一、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的幾乎所有方法。
有時,我們學習的太匆忙,忘記了對這個知識進行審視,忽略了很多原本就存在的東西,而去繞圈了。