網(wǎng)友回復(fù):vbs類的使用方法
2009-10-23 09:49:14 www.hackbase.com 來源:myvbscript
vbs類的使用方法 類的結(jié)構(gòu): class 類名稱 end class 調(diào)用方法 set myclass=new 類名稱 中間類里面的代碼, 類模塊的事件過程。Private Sub Class_Initialize()這里寫上類實(shí)例化的時候執(zhí)行的代碼 ...
vbs類的使用方法 類的結(jié)構(gòu): class 類名稱
end class 調(diào)用方法 set myclass=new 類名稱 中間類里面的代碼,
類模塊的事件過程。 Private Sub Class_Initialize() 這里寫上類實(shí)例化的時候執(zhí)行的代碼。 end sub Private Sub class_terminate() 這里是類注銷的時候自動執(zhí)行的代碼, end Sub 上面兩個子程序的名稱是規(guī)定的, 如果改了名稱,就會無效。 1、變量 2、函數(shù)(Function) 3、屬性(Property) 4、方法 (SUB)
定義變量 public mystr,mystring 這樣就定義了兩個公有的變量,調(diào)用方法myclass.mystr 反之 Private mystr,mystring 則為私有的變量,外部不能訪問的。
函數(shù)
Public Function Checkstr(Str) If Isnull(Str) Then CheckStr = "" Exit Function End If CheckStr = Replace(Str,"'","''")
End Function 這是一個公有函數(shù),外部可以訪問的,調(diào)用方法 myclass.Checkstr(Str) 反之如果為私有的,則用Private 取代public 3、屬性(Property) 屬性分兩種,一種是只寫屬性,一種是只讀屬性。
也可以為公有或私有,現(xiàn)在以公有為例子。 這是一個只寫的屬性 Public Property Let Value(ByVal vNewValue) Dim tmpstr tmpstr = vNewValue tmpstr = split(tmpstr,"@@@") html = split(tmpstr(0),"|||") Strings = split(tmpstr(1),"|||") pic = split(tmpstr(2),"|||") End Property 這是一個只讀的屬性 Public Property Get TodayNum TodayNum = Application(Forum_sn & "_Dv_setup")(9,0) End Property
如果要有讀寫的屬性那么 Public Property Get TodayNum TodayNum = Application(Forum_sn & "_Dv_setup")(9,0) End Property Public Property Let TodayNum(ByVal vNewValue) TodayNum = vNewValue End Property
這樣寫TodayNum就具有讀寫的屬性了,
方法,也以公有為例, Public Sub TrueCheckUserLogin() 代碼 end sub
以下為一個簡單的類的的例子: Class cls_templates Public html,Strings,pic Private Sub Class_Initialize()
end sub Private Sub class_terminate()
end sub Public Property Let Value(ByVal vNewValue) Dim tmpstr tmpstr = vNewValue tmpstr = split(tmpstr,"@@@") html = split(tmpstr(0),"|||") Strings = split(tmpstr(1),"|||") pic = split(tmpstr(2),"|||") End Property End Class
Dim MyToolbox Set MyToolbox = New CToolbox Response.Write "UserName: " & MyToolbox.UserName & "<BR>" & vbCrLf Response.Write "UserPhone: " & MyToolbox.UserPhone & "<BR>" & vbCrLf Set MyToolbox = Nothing
Class CToolbox Private m_conn, m_rs Private m_username, m_userphone
Public Property Get UserName() UserName = m_username End Property
Public Property Get UserPhone() UserPhone = m_userphone End Property
Private Sub Class_Initialize() Set m_conn = Server.CreateObject("ADODB.Connection") m_conn.C m_conn.Open Set m_rs = Server.CreateObject("ADODB.Recordset") Set m_rs.ActiveConnection = m_conn m_rs.Open "SELECT * FROM Users WHERE userid = '" & Request.ServerVariables("LOGON_USER") & "'" If Not m_rs.EOF Then m_username = m_rs.Fields("username") m_userphone = m_rs.Fields("userphone") End If End Sub
Private Sub Class_Terminate() On Error Resume Next m_rs.Close Set m_rs = Nothing m_conn.Close Set m_conn = Nothing End Sub
End Class
從 例子中你可以看到,UserName 和 UserPhone 屬性在類初始化之后就會有值。你可以將這個類的代碼放到 ASP 代碼的最后。然后在其余 的代碼中其功能就可以在使用,不用實(shí)例化ADO對象,進(jìn)行數(shù)據(jù)庫調(diào)用和之后的清理。而且,如果你使用的是 Microsoft Visual InterDev,那么類中定義的屬性和方法可以通過智能感知(IntelliSense)使用。
智能感知只對一級屬性和方法有效,所以如果你創(chuàng)建一個類返回其它 ASP 類的對象,那么 InterDev 就不會提供可用的方法和屬性。
下面的代碼是一個類的骨架:
Class MyClass
Private Sub Class_Initialize() End Sub
Private Sub Class_Terminate() End Sub
End Class
使用這個基本信息,一個類被聲明,并且可以使用它來創(chuàng)建對象。但是這個類的對象沒有功能——它們是無用的東西。類的方法從 Public Sub 或者 Public Function 聲明構(gòu)建(Subs 沒有返回值,而 Function 有返回值)。
有 兩個方法可以暴露屬性:既可以在類的全局上下文中使用 Public VarName,也可以使用 Public Property Get/Set/Let。如果你需要一個只讀屬性,那么只要簡單地使用一個 Property Get 聲明即可。所 有其它聲明為 Private 的 Properties,Subs 或者 Functions 只有在實(shí)例化的對象才可用。在類的全局上下文中聲明為 Private 的變量是成員變量。
創(chuàng)建類的另外一個好處是你可以輕易的將這個類聲明移值到 Web 服務(wù)中。因?yàn)檫@是很多開發(fā)人員前 進(jìn)的方向,你可以通過使用類創(chuàng)建面向?qū)ο蟮拇a先行一步。當(dāng)你移值這些類聲明到一個 Web 服務(wù)時,你不需要重寫所有的放置了那段代碼的ASP代碼。所 要做的唯一的改變就是你的對象的實(shí)例化。
我發(fā)現(xiàn)創(chuàng)建這個抽象的最大的優(yōu)點(diǎn)是可以使用其它 Web 開發(fā)者的幫助。因?yàn)閷τ诤芏嚅_發(fā)人員來 說在每個不同的實(shí)現(xiàn)中重復(fù)創(chuàng)建相同的代碼效率相當(dāng)?shù)停赃@個方法為每個開發(fā)人員提供了一個抽象工具。這就允許每個開發(fā)人員將精力更多地集中在當(dāng)前工作的 功能上面,而不是花費(fèi)時間重寫他們已經(jīng)開發(fā)過的代碼上面。
如果你奇怪為什么我不提供一個COM對象來處理這個功能,那是因?yàn)樗鼤涯沔i定 到細(xì)節(jié)設(shè)計(jì)中。通過在 ASP 中動態(tài)地創(chuàng)建類,你可以不用重新編譯和發(fā)布就能夠?qū)︻愖龀龈摹T陬惞潭ㄖ螅賹⑺浦档?COM、Windows 腳 本組件(WSC)或者一個 Web 服務(wù)中,但是在開發(fā)階段還是靈活一些好。