Response.Write User.Job
' Response.Write User.getJob()
' 改变属性值
User.Job = "Engineer"
' User.setJob "Engineer"
Response.Write User.getJob()
Set User = Nothing
Set DynObj = Nothing
其原理很简单,就是通过给定的Key-Value动态生成VBS Class脚本代码,然后调用Execute执行以便于将这段代码加入到代码上下文流中,最后再通过Eval新建这个对象。
好了,就介绍到这里,今后我可能还会陆续公开一些Classic ASP的相关技巧代码。
2012年11月7日更新
修复从旧项目移植过来导致的BUG。
修复了一些Bug增加了一些特性,我先把最新的代码贴出来供大家参考:
'
' ASP/VBScript Dynamic Object Generator
' Author: WangYe
' For more information please visit
'
' This code is distributed under the BSD license
'
' UPDATE:
' 2012/11/7
' 1. Add variable key validator.
' 2. Add hasattr_ property for determine
' if the property exists.
' 3. Add getattr_ property for get property
' value safety.
' 4. Class name can be accessed by ClassName_ property.
' 5. Fixed some issues.
'
Const PROPERTY_ACCESS_READONLY = 1
Const PROPERTY_ACCESS_WRITEONLY = -1
Const PROPERTY_ACCESS_ALL = 0
Class DynamicObject
Private m_objProperties
Private m_strName
Private m_objRegExp
Private Sub Class_Initialize()
Set m_objProperties = CreateObject("Scripting.Dictionary")
Set m_objRegExp = New RegExp
m_objRegExp.IgnoreCase = True
m_objRegExp.Global = False
m_objRegExp.Pattern = "^[a-z][a-z0-9]*$"
m_strName = "AnonymousObject"
m_objProperties.Add "ClassName_", _
Array(m_strName, PROPERTY_ACCESS_READONLY)
End Sub
Private Sub Class_Terminate()
Set m_objRegExp = Nothing
If IsObject(m_objProperties) Then









