Board logo

标题: [转贴] VBS脚本类构造函数与Default关键字使用介绍 [打印本页]

作者: find    时间: 2012-2-4 13:09     标题: VBS脚本类构造函数与Default关键字使用介绍

很多人并不知道 VBS 中还有个 Default 关键字,更不用说知道 Default 关键字的用法。
其实 MSDN 的 VBScript 文档中关于 Function 和 Sub 语句的部分提到过 Default 关键字:

Default
Used only with the Public keyword in a Class block to indicate that the Function procedure is the default method for the class. An error occurs if more than one Default procedure is specified in a class.

Default 只能在 Class 语句块中与 Public 关键字一起使用来表明函数过程是类的默认方法。如果类中一个以上的过程被定义为 Default,那么会出现错误。
一个简单的例子:

  1. Class MyClass
  2. Public Default Function SayHello(name)
  3. SayHello = "Hello, " & name
  4. End Function
  5. End Class
  6. Set o = New MyClass
  7. MsgBox o("demon")
复制代码


很多面向对象的语言都能使用构造函数来初始化类的对象,但是 VBS 却没有构造函数的概念,只是提供了一个类初始化事件来初始化对象:

  1. Class TestClass
  2. ' Setup Initialize event.
  3. Private Sub Class_Initialize
  4. MsgBox("TestClass started")
  5. End Sub
  6. ' Setup Terminate event.
  7. Private Sub Class_Terminate
  8. MsgBox("TestClass terminated")
  9. End Sub
  10. End Class
  11. ' Create an instance of TestClass.
  12. Set X = New TestClass
  13. ' Destroy the instance.
  14. Set X = Nothing
复制代码


虽然看起来很像构造函数,但是却不能带参数,没有办法像其他语言那样用特定的参数来初始化对象。
有了 Default 关键字之后,我们可以模拟实现构造函数的功能:

  1. 'Author: Demon
  2. 'Date: 2011/09/29
  3. 'Website: http://demon.tw
  4. Class Rectangle
  5. Private height, width
  6. Public Default Function Construtor(h, w)
  7. height = h : width = w
  8. Set Construtor = Me
  9. End Function
  10. Public Property Get Area
  11. Area = height * width
  12. End Property
  13. End Class
  14. '看起来是不是很像构造函数呢
  15. Set r = (New Rectangle)(6, 8)
  16. MsgBox r.Area
复制代码

转自:http://www.jb51.net/article/28682.htm
作者: Demon    时间: 2012-2-4 13:33

本帖最后由 Demon 于 2012-2-4 13:36 编辑

垃圾脚本之家

麻烦你注明原出处好么

http://demon.tw/programming/vbs-default-keyword.html




欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2