在Jscript中定义类通过类声明, 包含方法和对象和var 声明。对于类的派生通过下面两个程序的对比,你讲清楚地明白。
JScript 5.5 Code
// Simple object with no methods
function Car(make, color, year)
{
this.make = make;
this.color = color;
this.year = year;
}
function Car.prototype.GetDescription()
{
return this.year + " " + this.color + " " + this.make;
}
// Create and use a new Car object
var myCar = new Car("Accord", "Maroon", 1984);
print(myCar.GetDescription());
JScript.NET Code
// Wrap the function inside a class statement.
class Car
{
var make : String;
var color : String;
var year : int;
function Car(make, color, year)
{
this.make = make;
this.color = color;
this.year = year;
}
function GetDescription()
{
return this.year + " " + this.color + " " + this.make;
}
}
var myCar = new Car("Accord", "Maroon", 1984);
print(myCar.GetDescription());
Jscript.net还支持定义private和protected property通过GET和SET进行读写。
如下例:
class Person
{
private var m_sName : String;
private var m_iAge : int;
function Person(name : String, age : int)
{
this.m_sName = name;
this.m_iAge = age;
}
// Name 只读
function get Name() : String
{
return this.m_sName;
}
// Age 读写但是只能用SET
function get Age() : int
{
return this.m_sAge;
}
function set Age(newAge : int)
{
if ((newAge >= 0) && (newAge <= 110))
this.m_iAge = newAge;
else
throw newAge + " is not a realistic age!";
}
}
var fred : Person = new Person("Fred", 25);
print(fred.Name);
print(fred.Age);
// 这将产生一个编译错误,name是只读的。
fred.Name = "Paul";
// 这个将正常执行
fred.Age = 26;
// 这将得到一个 run-time 错误, 值太大了
fred.Age = 200;