不允許顯式地將一個變數聲明為 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