JScript 8.0
JScript 如何重载方法

当类中两个或更多 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.

请参见