工作需要,用vbs写了个小工具,回归原始了一把。 鉴于本人长期使用java,与对象异常亲热。 今天也试了下在VBScript中使用对象,感觉不错!有兴趣的朋友可以自己试试
?
[一] VBScript对象声明
? ? 其中ClassName为类名,创建对象的语句也很简单,即: Set obj = new ClassName ? ? ? [二] 对象中的成员 ? 常用的即public成员与private成员,private成员只能在类内部可见。 以Person类为例,我们定义了如下4个成员变量。私有变量前加"m_"为VBScript通常的命名规约。 ? ? ?Class ClassName
' Fields, Functions, Properties go here.
End Class
?
Class Person public name private m_age private m_gender private m_bestFriend End 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 Person public name private m_age private m_gender private m_bestFriend '========================================================================== ' Name: age ' Summary: Let & Get method m_age '========================================================================== public Property Get age() age = m_age End Property public Property Let age(intAge) m_age = intAge End Property '========================================================================== ' Name: gender ' Summary: Let & Get method m_gender '========================================================================== public Property Get gender() gender = m_gender End Property public Property Let gender(strGender) m_gender = strGender End Property '========================================================================== ' Name: bestFriend ' Summary: Set & Get method m_bestFriend '========================================================================== public Property Get bestFriend() Set bestFriend = m_bestFriend End Property public Property Set bestFriend(objFriend) Set m_bestFriend = objFriend End 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 Person public name private 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)) = objFriend End Function '========================================================================== ' Name: getFriends ' Summary: Get all the friends '========================================================================== Public Function getFriends() getFriends = m_friends End Function End 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."
?
?
Hope it can relax your eyes : )