共用方式為


JScript 多載方法的方式

更新:2007 年 11 月

當某個類別中有兩個或多個 JScript 成員 (函式或屬性) 的名稱相同但簽章不同時,這些成員即稱為「多載」函式 (屬性)。函式的「簽章」是根據其接受的參數數量、型別和順序而定。如果兩個函式以相同順序接受相同數量且相同型別的引數,則其簽章也會相同。若函式以不同順序接受相同型別的引數,或者擁有不同數量或不同型別的引數,其簽章也就不同(注意,引數的名稱對於簽章沒有任何影響)。靜態函式也可以有多載,但和回傳回型別一樣,方法的靜態狀態不會影響其簽章。因此,與執行個體方法名稱相同的靜態方法必須有不同的參數清單。

處理邏輯

呼叫多載函式時,會根據傳遞至函式的實際引數型別,呼叫其引數最接近所傳遞引數的多載函式。如果引數型別與特定多載完全相符,則會呼叫該項多載。如果引數型別未與任何多載完全相符,則會執行刪除程序決定要呼叫的多載。刪除程序會根據實際型別轉換至可用的多載型別的難易度而定。如需詳細資訊,請參閱 JScript 中的強制型轉。在這個範例中,MethodOverload 類別有名為 Greetings 的三個多載方法。第一個多載不會使用任何參數,第二個多載會使用一個 String 型別的參數,而第三個多載則會使用兩個參數︰String 型別和 int 型別的參數。

var methodOverload = new MethodOverload();
methodOverload.Greetings();
methodOverload.Greetings("Mr. Brown");
methodOverload.Greetings(97, "Mr. Brown");

class MethodOverload
{
   function Greetings()
   {
     print("Hello, and welcome!");
   }
   function Greetings(name : String)
   {
     print("Hello, " + name + "!");
   }
   function Greetings(ticket : int, name : String)
   {
     print("Hello, " + name + "! Your ticket number is " + ticket + ".");
   }
}

本程式的輸出為:

Hello, and welcome!
Hello, Mr.Brown!
Hello, Mr.Brown! Your ticket number is 97.

請參閱

其他資源

JScript 語言教學課程

JScript 資料型別