ASP的(VBScript)类基础学习

首先ASP的(VBScript)类是由事件和方法(它们就是构成类的成员了)构成的! 
在 Class 块中,成员通过相应的声明语句被声明为 Private(私有成员,只能在类内部调用) 或 Public(公有成员,可以在类内外部调用) 。被声明为 Private 的将只在 Class 块内是可见的。被声明为 Public 不仅在 Class 块的内部是可见的,对 Class 块之外的代码也是可见的。没有使用 Private 或 Public 明确声明的被默认为 Public。在类的块内部被声明为 Public 的过程(Sub 或 Function)将成为类的方法。Public 变量将成为类的属性,同使用 Property Get、Property Let 和 Property Set 显式声明的属性一样。类的缺省属性和方法是在它们的声明部分用 Default 关键字指定的。

下面我们来看一个例子

<script language=vbscript runat=server>

Class myClass
'//----声明(声明就是定义)myClass类的类内部(私有的[Private])变量
Private strAuthor
Private strVersion
Private strExample

'//---------------------------定义类的事件-------------------------------//
'//----Class_Initialize()是类的初始化事件,只要一开始使用该类,首先会触发该部分的执行,下面我们会在该成员中初始化该类的作者和版本以及在屏幕上显示一下该类已经开始了

Private Sub Class_Initialize()
strAuthor = "思源"
strVersion = "1.0"
Response.Write "<br>myClass开始了<br>"
End Sub
'//----Class_Terminate()是类的结束事件,只要一退出该类,就会触发该事件,下面我们会该事件中设定退出该类时会在屏幕上显示该类已结束了。

Private Sub Class_Terminate()
Response.Write "<br>myClass结束了<br>"
End Sub

'//---------------------------用户自己定义的方法-------------------------------//

'//----该方法返回一个版本信息

Public Sub Information()
Response.Write "<br>Coding By <a href='mailtcoder@sinobe.com'>Maxid_Zen</a> @

<a href='http://www.design60s.com'>www.design60s.com</a>.<br>"
End Sub

'//---------------------------定义类的输出属性-------------------------------//

'//----定类的属性,该属性是让用户初始化strExapmle变量

Public Property Let setExapmle(ByVal strVar)
strExapmle = strVar
End Property

'//---------------------------定义类的输出属性-------------------------------//

'//----定义类的属性,该属性是返回一个版本号 

Public Property Get Version
Version = strVersion
End Property

'//----定义类的属性,该属性是返回该类的作者号

Public Property Get Author
Author = strAuthor
End Property

'//----定义类的属性,该属性是返回一个版本号

Public Property Get Exapmle
Exapmle = strExapmle
End Property

End Class

</script>
<%

'//-------这里是使用该类的例子

Dim oneNewClass

Set oneNewClass = New myClass

Response.Write "作者:" & oneNewClass.Author & "<br>"
Response.Write "版本:" & oneNewClass.Version & "<br>"

oneNewClass.setExapmle = "这是一个简单类的例子"

Response.Write "用户自定义:" & oneNewClass.Exapmle & "<br>"

oneNewClass.Information

 

Set oneNewClass = Nothing

%>

ASP中的Session本身是可以储存对象的,它可以保存基本变量,数组,自动化对象(Automation Object)等,但在储存自定义类的对象时会碰到问题。

如下面的代码:
<%
If isempty(Session("node")) Then Set Session("node")=New ListNode
Set n=Session("node")
Response.Write n.Content
%>

  还是上面的ListNode这个类,这段代码意图在一个用户会话中只保留一个ListNode的对 象。所以在用户第一次访问该网页时,会生成ListNode的一个对象,并保存在Session("node")中;后面访问该网页时,因为 Session("node")不为空了,所以不会生成一个新的对象,而是到 Session("node")中取出保存的对象。

理论上应该也会输出100,但是问题来了,ASP一直会报错:
Microsoft VBScript runtime error '800a01b6'
Object doesn't support this property or method: 'n.Content'
用n.Type也会出错。同样的代码翻译成PHP,运行却是可以通过的。为什么?

  个人分析下来,认为Session可以保存对象是没错,只是VBScript中类型转换的机制太 弱,而且没有显式的强制类型转换供用户使用,无法将 Session("node")正确转换为ListNode类型。因为是自定义的类,我们只能在每个页面中都出现类的定义语句,这样在ASP看来,每次读 取这个页面时,ListNode类都是一个新类,所以就不认得Session中的这个类的对象了。

  结论:尽量不要想到用Session或Application来存储ASP中自定义类的对象。如果 确实需要,可以考虑用COM来编写类,然后在VBScript中用:Set Session("obj") = Server.CreateObject("YourApp.YourClass")来创建一个对象,然后即可实现上面预想的功能了。

时间: 2024-11-08 19:52:54

ASP的(VBScript)类基础学习的相关文章

ASP的类(VBScript class)基础学习

首先ASP的(VBScript)类是由事件和方法(它们就是构成类的成员了)构成的 在 Class 块中,成员通过相应的声明语句被声明为 Private(私有成员,只能在类内部调用) 或 Public(公有成员,可以在类内外部调用) .被声明为 Private 的将只在 Class 块内是可见的.被声明为 Public 不仅在 Class 块的内部是可见的,对 Class 块之外的代码也是可见的.没有使用 Private 或 Public 明确声明的被默认为 Public.在类的块内部被声明为 P

关于ASP的(VBScript)类

vbscript 首先ASP的(VBScript)类是由事件和方法(它们就是构成类的成员了)构成的,如果大家还没有接触过,可以先看看下面的说明(哈哈,我是现学现卖,说得不好请见谅) 在 Class 块中,成员通过相应的声明语句被声明为 Private(私有成员,只能在类内部调用) 或 Public(公有成员,可以在类内外部调用) .被声明为 Private 的将只在 Class 块内是可见的.被声明为 Public 不仅在 Class 块的内部是可见的,对 Class 块之外的代码也是可见的.没

关于ASP的(VBScript)类,只希望给初学者看一看,希望对你们有帮助

vbscript|初学 首先ASP的(VBScript)类是由事件和方法(它们就是构成类的成员了)构成的,如果大家还没有接触过,可以先看看下面的说明(哈哈,我是现学现卖,说得不好请见谅) 在 Class 块中,成员通过相应的声明语句被声明为 Private(私有成员,只能在类内部调用) 或 Public(公有成员,可以在类内外部调用) .被声明为 Private 的将只在 Class 块内是可见的.被声明为 Public 不仅在 Class 块的内部是可见的,对 Class 块之外的代码也是可见

那些年,我还在学习asp.net(二) 学习笔记_基础应用

那些年,我还在学习asp.net(二) 那些年觉得看视频是很轻松的了解一个东西,但是这样的不足就是感觉太慢了,没有看书来得快,所以在有了一些了解后,还得看点书,也许书上的不一定好,但书上会把每一个应该说到的地方说到,好有个初步的认识.比如说.NET平台.组件等知识的介绍,所以,那些年就开始了asp.net方面的进一步学习. 一.学习asp.net的准备知识 正如我前面那些年所学习的,在开始之前得对它们有一定的认识: 1.  html语言的基本使用 2.  CSS+DIV的学习,撑握基本的布局 3

值得收藏的asp.net基础学习笔记_实用技巧

值得收藏的asp.net基础学习笔记,分享给大家. 1.概论 浏览器-服务器 B/S 浏览的  浏览器和服务器之间的交互,形成上网B/S模式 对于HTML传到服务器  交给服务器软件(IIS)  服务器软件直接读取静态页面代码,然后返回浏览器 对于ASPX传达服务器  交给服务器软件(IIS)   IIS发现自己处理不了aspx的文件,就去映射表根据后缀名里找到响应的处理程序(isapi,服务器扩展程序) 问题:IIS如何调用可扩展程序? 答:可扩展程序首先就是按照IIS提供的借口实现代码,所以

scanner-Java基础学习中Scanner类nextInt方法问题

问题描述 Java基础学习中Scanner类nextInt方法问题 import java.util.*; public class Practice { public static String prompt = "How are you? "; public static void main(String[] args) { Scanner console = new Scanner(System.in); System.out.print(prompt); //int year=

《鸟哥的Linux 私房菜 基础学习篇(第三版)》——0.4 软件程序运行

0.4 软件程序运行 鸟哥的Linux 私房菜 基础学习篇(第三版) 鸟哥在上课时经常会开玩笑地问:"我们知道没有插电的计算机是一堆废铁,那么插了电的计算机是什么?"答案是"一堆会电人的废铁."这是因为没有软件的运行,计算机的功能就无从发挥了.就好像没有了灵魂的躯体也不过就是行尸走肉,重点在于软件/灵魂.所以下面咱们就得要了解一下"软件"是什么. 一般来说,目前的计算机系统将软件分为两大类,一个是系统软件,一个是应用程序.但鸟哥认为我们还是得要了

《鸟哥的Linux 私房菜 基础学习篇(第三版)》——1.2 Torvalds的Linux开发

1.2 Torvalds的Linux开发 鸟哥的Linux 私房菜 基础学习篇(第三版) 我们前面一节当中,提到了UNIX的历史,也提到了Linux是由芬兰人Torvalds所开发的.那么为何托瓦兹可以开发Linux呢?凭空想象而来的,还是有什么渊源?这里我们就来谈一谈! 1.2.1 Minix Linus Torvalds(托瓦兹, 1969年出生)的外祖父是赫尔辛基大学的统计学家,他的外祖父为了让自己的小孙子能够学点东西,所以从小就将托瓦兹带到身边来管理一些微计算机.在这个时期,托瓦兹接触了

【J2ME 2D 游戏开发系列】◣HIMI游戏开发启蒙教程◢JAVA零基础学习J2ME游戏开发全过程!

本站文章均为 李华明Himi 原创,转载务必在明显处注明:  转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/j2me-2/774.html Himi从写博客的最早开始就是Android游戏开发相关的,其实那么很多童鞋也知道Himi是做Java-J2me/Kjava出身,所以不少童鞋还在问我是否可以写一些J2me的相关游戏开发博文.虽然j2me趋势随着Nokia的没落和Android的崛起已经慢慢被弱化掉,但是J2me也是早些年非常火的平台不是么!