不允许显式地将一个变量声明为 Class 类型。在 VBScript 的上下文中,“类对象”一词指的是用 VBScript Class 语句定义的任何对象。
在使用 Class 语句建立了类定义之后,可以用下面的形式创建类的一个实例:
Dim X Set X = New classname 由于 VBScript 是一种后期约束型语言,下面的做法是不允许的:
Dim X as New classname -或-
Dim X X = New classname -或-
Set X = New Scripting.FileSystemObject
Class 对象的事件 Class 对象提供对类的事件的访问。
Initialize 事件 在创建类的实例时发生此事件。
Private Sub Class_Initialize() 语句 End Sub 当类初始化时,statements部分由零个或多个将要运行的代码语句组成。
说明 下面的例子演示了 Initialize 事件的用法。
Class TestClass Private Sub Class_Initialize ' 设置 Initialize 事件。 MsgBox("TestClass started") End Sub Private Sub Class_Terminate ' 设置 Terminate 事件。 MsgBox("TestClass terminated") End Sub End Class
Set X = New TestClass ' 创建一个 TestClass 实例。 Set X = Nothing ' 删除实例。
Terminate 事件
在所关联的类的实例终止时发生此事件。
Private Sub Class_Terminate() 语句 End Sub 当类初始化时,statements 部分由零个或多个将要运行的代码语句组成。
说明 下面的例子演示了 Terminate 事件的用法。
Class TestClass Private Sub Class_Initialize ' 设置 Initialize 事件。 MsgBox("TestClass started") End Sub Private Sub Class_Terminate ' 设置 Terminate 事件。 MsgBox("TestClass terminated") End Sub End Class Set X = New TestClass ' 创建一个 TestClass 实例。 Set X = Nothing ' 删除实例。
Class 语句 声明一个类的名称,以及组成该类的变量、属性和方法的定义。 Class name statements End Class 参数 name 必选项。Class 的名称;遵照标准的变量命名规则。 statements 必选项。一个或多个语句,定义了 Class 的变量、属性和方法。
说明 在 Class 块中,成员通过相应的声明语句被声明为 Private 或 Public。被声明为 Private 的将只在 Class 块内是可见的。被声明为 Public 不仅在 Class 块的内部是可见的,对 Class 块之外的代码也是可见的。没有使用 Private 或 Public 明确声明的被默认为 Public。 在类的块内部被声明为 Public 的过程(Sub 或 Function)将成为类的方法。Public 变量将成为类的属性,同使用 Property Get、Property Let 和 Property Set 显式声明的属性一样。类的缺省属性和方法是在它们的声明部分用 Default 关键字指定的。关于如何使用该关键字,请参考单独的声明语句主题。
Property Get 语句 在 Class 块中,声明构成用来取得(返回)属性值的 Property 过程的主体的名称、参数和代码。 [Public [Default]| Private] Property Get name [(arglist)] [statements] [[Set] name = expression] [Exit Property] [statements] [[Set] name = expression] End Property 参数 Public 表明Property Get 过程可以被所有脚本中的其他过程访问。 Default 只与 Public 关键字一起使用,表明 Property Get 过程中定义的属性为类的缺省属性。 Private 表明 Property Get 过程只对定义它的 Class 块中的其他过程是可以访问的。 name Property Get 过程的名称;遵守标准的变量命名规则,区别仅仅在于它可以与同一Class块中的Property Let 或 Property Set过程。 arglist 该变量列表代表了 Property Get 过程被调用时传递给它的参数。多个参数之间用逗号分隔开。Property Get 过程中的每个参数的名称必须与 Property Let 过程中的相应参数相同(如果有的话)。 statements 任意的一组语句,将在 Property Get 过程的主体中执行。 Set 在将对象作为 Property Get 过程的返回值时使用的关键字。 expression Property Get 过程的返回值。
说明 如果未使用 Public 或 Private 明确声明,则 Property Get 过程被缺省为公有的,即它们对于脚本中的其他所有过程都是可见的。Property Get过程中的局部变量的值在不同的过程调用之间是不保存的。
在其他任何过程(例如 Function 或 Property Let) 内部都不能定义 Property Get 过程。
Exit Property 语句将导致立即从 Property Get 过程中退出。程序将继续执行调用 Property Get 过程的语句之后的程序。Exit Property 语句可以出现在 Property Get 过程中的任何位置,次数不限。
与Sub 和 Property Let 过程类似,Property Get 过程是能够接受参数的过程,可以执行一系列的语句,以及改变参数的值。然而,与Sub 和 Property Let 不同的是,Property Get 过程可以被用于表达式的右侧,用与使用Function 或属性名称相同的方式来返回属性的值。
要求 版本 5
Property Let 语句 在 Class 块中,声明名称、参数和代码等,它们构成了设置属性值的 Property 过程的主体。 [Public | Private] Property Let name ( [arglist,] value ) [statement] [Exit Property] [statement] End Property 参数 Public 表明 Property Let 过程可以被所有脚本中的其他所有过程访问。 Private 表明 Property Let 过程只能被定义之的 Class 块内的其他过程访问。 name Property Let 过程的名称;遵守标准的变量命名规则,区别仅仅在于其名称可以与相同 Class 块中的 Property Get 或 Property Set 过程相同。 arglist 该变量列表代表了在调用时被传递到 Property Let 过程的参数。多个参数之间用逗号隔开。Property Let 过程的每个参数的名字必须与 Property Get 过程中的相应参数相同。此外, Property Let 过程的参数比相应的 Property Get 过程总要多一个。该参数为被赋予属性的值。 value 该变量中包含要赋予属性的值。当过程被调用时,该参数将出现在调用表达式的右侧。 statement 任意的一组语句,将在 Property Let 过程的主体内执行。
说明 如果未明确地使用 Public 或 Private 进行指定,Property Let 过程被缺省设置为公有的,即它们对于脚本内的其他所有过程都是可见的。Property Let过程中的局部变量的值在不同的过程调用之间是不被保存的。
在其他任何过程(例如 Function 或 Property Get)的内部不能够定义 Property Let 过程。
Exit Property 语句将导致立即从 Property Let 过程中退出。程序将从调用 Property Let 过程的语句之后的点继续执行。Exit Property 语句可以出现在 Property Let 过程中的任何位置,次数不限。
注意 每个 Property Let 语句必须为所定义的过程至少定义一个参数。该参数(在存在多个参数时的最后一个参数)包含了当 Property Let 语句被调用时要赋予属性的值。该参数在前面的语法中称为value。 与 Function 和 Property Get 过程类似,Property Let 过程是一个单独的过程,它可以接受参数,执行一系列的语句,还可以改变参数的值。不过,与Function 和 Property Get 过程不同的是,它们两者都返回一个值,而Property Let过程只能用于属性赋值表达式的左侧。
要求 版本 5
Property Set 语句 在 Class 块中,声明名称、参数和代码,这些构成了将引用设置到对象的 Property 过程的主体。 [Public | Private] Property Set name( [arglist,] reference ) [statement] [Exit Property] [statement] End Property
参数 Public 表明 Property Set 过程可以被所有脚本中的其他所有过程访问。 Private 表明 Property Set 过程只能被声明之的同一 Class 块中的其他过程访问。 name Property Set 过程的名称;遵守标准的变量命名规则,不过该名称可以与同一个 Class 块中的 Property Get 或 Property Let 过程相同。 arglist 变量列表,代表在 Property Set 过程被调用时传递给它的参数。多个参数之间用逗号分隔开。此外,Property Set 过程将总是比它相应的 Property Get 过程多一个参数。这个多出来的参数是被赋予属性的对象。 reference 变量,其中包含被用于对象引用赋值的右侧的对象引用。 statement 将要在 Property Set 过程主体中执行的任何一组语句。
说明 除非使用 Public 或 Private 明确地进行指定,否则 Property Set 过程被设置为缺省的公有模式,即脚本中的其他所有过程都是可见的。在不同的过程调用时,Property Set 过程中的局部变量是不保存的。
Exit Property 语句将导致立即从 Property Set 过程中退出。程序将继续执行调用 Property Set 过程之后的语句。Exit Property 语句的数量不受限制,可以出现在 Property Set 过程中的任何位置。
注意 每个 Property Set 语句都必须为所定义的过程至少定义一个参数。当 Property Set 语句所定义的过程被调用时,该参数(在多个参数时为最后一个参数)将为属性提供实际的对象引用。在前面的语法中,该参数称为引用。 与 Function 和 Property Get 过程类似,Property Set 过程是一个单独的过程,它可以有若干参数,执行一系列的语句,还可以改变参数的值。然而,与 Function 和 Property Get 过程不同的是,函数和过程都可以返回值,而 Property Set 过程对象引用赋值(Set 语句)的左侧。
要求 版本 5
Public 语句 定义公有变量并分配存储空间。在 Class 块中定义私有变量。 Public varname[([subscripts])][, varname[([subscripts])]] . . . 参数 varname 变量的名称,遵循标准变量命名规则。 subscripts 数组变量的维数;最多可以声明 60 维的数组。subscripts 参数使用下列语法: upper [,upper] . . .
数组的下界总是 0。
说明 Public 语句变量可用于全部脚本中的所有过程。
在使用引用对象的变量之前,必须用 Set 语句将某个已有对象赋予该变量。在赋值之前,所声明的对象变量被初始化为 Empty。
也可用带空圆括号的 Public 语句来声明动态数组。声明动态数组后,可在过程内使用 ReDim 语句来定义该数组的维数和元素。如果试图重新声明数组变量的维数,且此数组变量的大小已在 Private、Public 或 Dim 语句中显式地指定,则会发生错误。
下面例子举例说明如何使用 Public 语句: Public MyNumber ' 公用 Variant 变量。 Public MyArray(9) ' 公用数组变量。 ' Variant 变量的多个公用声明。 Public MyNumber, MyVar, YourNumber