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