在VBScript中使用对象
工作需要,用vbs写了个小工具,回归原始了一把。 鉴于本人长期使用java,与对象异常亲热。 今天也试了下在VBScript中使用对象,感觉不错!有兴趣的朋友可以自己试试
?
[一] VBScript对象声明
Class ClassName ' Fields, Functions, Properties go here.End Class
?
其中ClassName为类名,创建对象的语句也很简单,即: Set obj = new ClassName
?
?
?
[二] 对象中的成员
?
常用的即public成员与private成员,private成员只能在类内部可见。 以Person类为例,我们定义了如下4个成员变量。私有变量前加"m_"为VBScript通常的命名规约。
?
?
?
?
Class Person public name private m_age private m_gender private m_bestFriendEnd Class
?
?
?外部调用public变量时,可直接用.[变量名], 若我们想为Person定义名字为John,即:
Set John = new Person
John.name = "John"
?
[三] 对象中Properties的Let, Set与Get
?
在VBScript脚本中,我们通常把成员变量称之为Properties,我们可以为它定义Let, Set, Get Procedure。 由于我们经常会将变量设为private的,因此这三个方法就显得很重要了。 其中若Property为普通变量,则用Let进行设值,若为对象则需要定义Set。 取值直接用Get。
Class Personpublic nameprivate m_ageprivate m_genderprivate m_bestFriend'==========================================================================' Name: age' Summary: Let & Get method m_age'==========================================================================public Property Get age() age = m_ageEnd Propertypublic Property Let age(intAge) m_age = intAgeEnd Property'==========================================================================' Name: gender' Summary: Let & Get method m_gender'==========================================================================public Property Get gender() gender = m_genderEnd Propertypublic Property Let gender(strGender) m_gender = strGenderEnd Property '==========================================================================' Name: bestFriend' Summary: Set & Get method m_bestFriend'==========================================================================public Property Get bestFriend() Set bestFriend = m_bestFriendEnd Propertypublic Property Set bestFriend(objFriend) Set m_bestFriend = objFriendEnd Property End Class
?
?
调用Let/Set/Get, 例子如下:
Set John = new Person
John.name = "John"
John.age = 25
John.gender = "Male"
?
Set Annie = new Person
Annie.name = "Annie"
Annie.age = 23
Annie.gender = "Female"
?
Set John.bestFriend = Annie
wscript.echo "John's best friend: " & John.bestFriend.name
?
[四] 对象中定义函数
?
与java/c++一样VBScript也支持在对象内部定义函数。 格式与用法都很简单。 给个加好友的例子。
Class Personpublic nameprivate m_friends'==========================================================================' Name: addFriend' Summary: Add a friend to Person'==========================================================================Public Function addFriend(objFriend) If (NOT IsEmpty(m_friends)) Then ' Use Preserve keyword to avoid erasing while Redim. ReDim Preserve m_friends(UBound(m_friends) + 1) Else ReDim m_friends(0) End If ' Add Friend Set m_friends(UBound(m_friends)) = objFriendEnd Function '==========================================================================' Name: getFriends' Summary: Get all the friends'==========================================================================Public Function getFriends() getFriends = m_friendsEnd FunctionEnd Class
?
?
测试例子:
Set John = new Person
John.name = "John"
Set Annie = new Person
Annie.name = "Annie"
Set Michael= new Person
Annie.name = "Michael"
?
John.addFriend(Annie)
John.addFriend(Michael)
?
wscript.echo "John has " & UBound(John.getFriends()) + 1 & " friends."
?
?
1 楼 youyudetufei 2010-10-12 学习啦啊!