在許多物件導向的高階語言中,都有方法的重載。而javascript沒有方法重載這個概念。但是我們可以透過arguments這個參數來偽裝成函數的重載
在模擬之前我們先來看看程式碼:
//表面上沒有宣告形式參數的函數
function fun() {
alert("範例程式碼");
}
fun("小明", 100, true);//自己寫了三個實際參數
透過結果我們看到,即使我們宣告函數的時候沒有定義形式參數,在呼叫方法的時候,我們也是可以寫實際參數的。 (實際上形式參數是寫給程式設計師呼叫函數時看的)
我們可以在程式碼中可以得到實際參數嗎?答案是肯定的:請看代碼:
//表面上沒有宣告形式參數的函數
function fun() {
alert(arguments[0]);//得到第一個實際參數的值。
alert(arguments[1]);//得到第二個實際參數的值。
alert(arguments[2]);//得到第三個實際參數的值。
alert(arguments.length);//得到實際參數的個數。
alert("範例程式碼");
}
fun("小明", 100, true);//自己寫了三個實際參數
透過程式碼我們就可以知道arguments(內部屬性) 本身就是一個陣列,其作用就是存放方法的實際參數。
有了以上知識點後,模擬方法重載就有思路了。我們可以透過實際參數的數量來作個判斷,從而執行不同的邏輯程式碼。簡單程式碼如下:
function fun() {
if (arguments.length == 0) {
alert("執行沒有實際參數的代碼");
}
else if(arguments.length==1)
{
alert("執行傳入一個實際參數的代碼");
}
else if(arguments.length==2)
{
alert("執行傳入兩個實際參數的代碼");
}
}
fun();
fun("小明");
fun("小明", "小花");