鉴于我们有一个脚本
Option Explicit
Class CClass
Private m_date
Private Sub Class_Initialize()
m_date = CDate("1970-01-01 00:00:00")
End Sub
Public Function Foo()
Dim d : d = Date()
WScript.Echo "d is " & FormatDateTime(d, vbGeneralDate)
End Function
Public Property Get Date()
Date = m_date
End Property
Public Property Let Date(p_date)
m_date = CDate(p_date)
End Property
End Class
Dim obj : Set obj = NEW CClass
Call obj.Foo()
类函数CClass.Foo()如何调用内置的VBScript函数Date()而没有属性CClass.Date干扰?
我目前的解决方案是引入一个可以调用的虚拟Date_()函数。但这似乎错了。我认为应该有一些方法来指定我们想要调用类范围之外的东西。
答案 0 :(得分:3)
我几乎肯定没有办法在VBScript中做你要求的事。
但即使你可以想出办法来做到这一点,你真的不应该。您需要为自己的函数选择与内置函数名称不冲突的名称。对于像VBScript这样的动态脚本语言,其他任何东西都是完全无法维护的。
为您的Date
媒体资源选择其他名称。优选更具描述性的:该属性返回的日期是什么?日期是指什么?怎么可能被使用?无论你做什么,都不要将它重命名为Date_
- 这不是更好。
答案 1 :(得分:1)
您可以在课堂内调用它,例如:
Dim d : d = me.Date()
Me
与您在Javascript中使用This
相同,例如
答案 2 :(得分:0)
参加聚会太晚了,但有一个使用eval
功能的解决方案。
see eval function docs for details
Class CClass
Private m_date
Private Sub Class_Initialize()
m_date = CDate("1970-01-01 00:00:00")
End Sub
Public Function Foo()
Dim d : d = eval("Date()")
WScript.Echo "d is " & FormatDateTime(d, vbGeneralDate)
End Function
Public Property Get Date()
Date = m_date
End Property
Public Property Let Date(p_date)
m_date = CDate(p_date)
End Property
End Class
Dim obj : Set obj = NEW CClass
Call obj.Foo()