Class 對象
使用 Class 語句建立的對象。提供了對類的各種事件的訪問。
說明
不允許顯式地將一個變數聲明為 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 過程中的局部變數是不儲存的。
在其他任何過程(例如Function或Property Let)中都不能夠定義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
Private 語句
定義私人變數並分配儲存空間。在 Class塊中定義私人變數。
Private varname[([subscripts])][, varname[([subscripts])]] . . .
參數
varname
變數的名稱;遵循標準變數命名規則。
subscripts
陣列變數的維數,最多可以聲明 60 維的數組。subscripts 參數使用下列文法:
upper [, upper] . . .
數組的下界總是 0。
說明
Private 語句變數只能在聲明該變數的指令碼中使用。
在使用引用對象的變數之前,必須用 Set 語句將某個現有對象賦予此變數。在賦值之前,所聲明的物件變數被初始化Empty。
也可用帶空圓括弧的 Private 語句聲明動態數組。聲明動態數組後,可在過程內使用 ReDim 語句定義該數組的維數和元素。如果在 Private、Public 或 Dim 語句中已顯式指定數組大小,卻試圖重新聲明數組維數,就會發生錯誤。
注意 在過程中使用 Private 語句時,通常將 Private 語句放在過程的開始處。
下面例子舉例說明如何使用 Private 語句:
Private MyNumber ' 私人 Variant 變數。
Private MyArray(9) ' 私人陣列變數。
' Variant 變數的多個私人聲明。
Private MyNumber, MyVar, YourNumber