VBScript 类成员变量被外部常量覆盖

2024-03-23

我发现vbscript类成员变量可以用外部常量值替换。

Example VBScript code:

''' save as test.vbs file
Class Person
  Private name
  Public Sub hi
    name= "inner_name"
    msgbox name  'will be "outer_name"
  End Sub
End Class

set p = new Person
p.hi

Const name = "outer_name"

您可以在 vbs 文件或经典 asp 文件中运行此代码。

将代码保存到test.vbs并双击运行它。 你会看见“外部名称”.

Why not “内部名称”?

根据我的理解,类私有成员变量不应该受到外部代码的影响。

可以修复吗?


这是我最后的解决方法:

  1. Use Sub or Function with ()
  2. Use Public with Me.XX
Class Person
  Public Function name()
    name= "inner_name"
  End Function
  Public Sub hi
    msgbox name  'will be "outer_name"
    msgbox name()  'will be "inner_name"
    msgbox me.name  'will be "inner_name"
    msgbox me.name()  'will be "inner_name"
  End Sub
End Class

set p = new Person
p.hi

Const name = "outer_name"


您创建一个在运行时可用的全局常量(无法更改)。该常量将胜过您的类私有成员(因为它们具有相同的名称),因为编译器不知道其中的区别。

建议对全局常量使用一组命名约定以避免冲突。


有用的链接

  • 类内常数 https://stackoverflow.com/q/21052084
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

VBScript 类成员变量被外部常量覆盖 的相关文章

  • 经典 ASP 中的超时问题

    我正在开发一个经典的 ASP 项目 在从数据库填充数据并将其绑定到 UI 中时遇到超时问题 我们得到以下错误 脚本超时 超出了脚本执行的最长时间 您可以通过为 Server Scripttimeout 属性指定新值或更改 IIS 作为管理工
  • 使用经典 ASP 发送“application/soap+xml”SOAP 请求

    如有任何帮助 我们将不胜感激 我已经做了几天了 下面是我到目前为止得到的代码 不幸的是 当我运行它时 我收到 HTTP 415 错误 无法处理消息 因为内容类型为 text xml charset UTF 8 不是预期的类型 applica
  • 不使用 powershell 远程安装 .msi?

    我们有一个多服务器系统我们需要在客户端安装 我想编写一个脚本 可以 关闭远程机器上的服务 卸载多台远程计算机上的软件 在多个远程计算机上安装 msi 文件 我曾挣扎过psexec and wmic做第 2 点和第 3 点 似乎必须有一种更简
  • VBScript/IIS - 如何为特定网站自动设置 ASP.NET 版本

    我需要编写在 IIS 6 0 上创建应用程序池和网站的脚本 我已经能够使用 adsutil vbs 和 iisweb vbs 创建这些 但不知道如何将我刚刚创建的网站的 ASP NET 版本设置为 2 0 50727 0 理想情况下 我想使
  • VBScript 运行时错误“800a000d”

    在我们的业务中 我们使用安全向导来控制和管理活动目录安全性 并对所做的更改进行审计跟踪 这是一个带有 ASP 前端的 SQL 数据库 它还可以与我们的 Active Directory 进行通信 编写该向导的人已经在我们的网站上为公司的另一
  • VBscript 使用输出参数从 MySQL 调用存储过程[重复]

    这个问题在这里已经有答案了 编辑20220219 使用下面的 VBSCRIPT 代码解决 SQL CALL NewCheckData pOld cn execute SQL SQL SELECT pOld Set RS cn execute
  • 在 VBS 中使用环境变量的值时出现问题

    我是 VBScript 新手 编写了一个可以修改 XML 文件的小脚本 但我在将计算机名称放入 XML 时遇到问题 我从以下位置获取了计算机名称HOST使用这些行的环境变量 Set wshShell CreateObject WScript
  • msscript.ocx 从哪里安装

    我在我的应用程序中使用 msscript ocx 它是 Windows 的 ActiveX 脚本主机 尽管我希望能够对高度可定制的 XP 嵌入式 XPe 使用相同的功能 1 我想知道在XPe上是否可以选择性安装msscript ocx 2
  • 如何在独立的 .vbs 文件中从 VBScript 调用 DotNetFactory?

    我一直在探索扩展 QuickTest Professional 脚本编写功能的选项 并发现今天早上 所以我决定尝试一下 下面的代码在 QTP 环境中执行时工作正常 但我也可以看到它在 QTP 环境之外的用途 不幸的是 从独立的 vbs 文件
  • 如何在.net core或.net standard项目中运行VBScript?

    我知道这是死胡同而且愚蠢的想法 但仍然 您知道在 Net Core 或 Net Standard 项目中运行 VBScript 的任何 nuget 或解决方法吗 我尝试使用 ClearScript V8 nuget https www nu
  • VBS 脚本 getElementbyID 错误(自动登录脚本)

    我正在编写适用于不同站点的 vbs 脚本文件 但我正在为我的大学网页编写用于互联网页面登录的自动登录脚本 所以我一直在工作直到填写用户名和密码 但我无法让它点击登录 这是大学登录的链接 我不确定您是否可以从网络外访问它 请注意编辑请不要将其
  • 经典的 asp/asp.net 网站 - global.asa 不工作

    最近我得到了一个用经典 ASP 编写的网站来配置和设置 尽管它似乎也有用 ASP NET 编写的页面 我目前遇到的问题是它似乎没有从 global asa 文件中获取设置 例如 Application ConnectionString 当我
  • 请求送达回执时,CDO 消息不会发送

    我正在用经典 ASP 编写一个应用程序 是的 请原谅我 它使用 Google Mail 发送电子邮件 我让它工作得很好 如下所示 Dim ObjSendMail Set ObjSendMail CreateObject CDO Messag
  • 如何使用 ASP classic 进行重定向

    我想从一个 URL 重定向到另一个 URL http female deals com http male deals com 如何通过在浏览器中将 URL 更改为新 URL 以及页面直接转到新 URL 而无需转到旧 URL 并进行刷新来实
  • 经典的 asp/vbscript - 使用正则表达式修改所有 href

    在经典 ASP VB 脚本 中 我需要通过对当前 url 进行编码并在其前面挂起来修改字符串中包含的多个不同的 href 基本上 我想让所有的 href 都通过我的redirect asp 并将现有的 href 编码传递到新链接中 例如 现
  • 在 VBScript 中导航 XML 节点(对于 Dummy)

    我正在尝试编写一个脚本来为我操作 xml 文件中的一些数据 我对 VBScript 还很陌生 但有 VB NET 和 VBA 背景 所以我觉得我知道自己在做什么 我认为可能有更好的方法来导航文件 而不是对每一行进行大量调用 InStr 或类
  • Subversion 中的忽略文件会从 svn:ignore 属性中删除旧值

    我有一个 Subversion 工作副本G csmdepot 构建其中有不同的文件 有些被忽略 有些则没有 我忽略了 Tortoise 的文件 Build 1 wimignored Build 2 wimignored WimID xml
  • 从命令行使用 VBScript 从 Excel 外部运行 Excel 宏

    我正在尝试从 Excel 文件外部运行 Excel 宏 我目前正在使用从命令行运行的 vbs 文件 但它一直告诉我找不到宏 这是我尝试使用的脚本 Set objExcel CreateObject Excel Application Set
  • Response.Buffer / Flush 似乎不起作用

    我有一个经典的 asp 页面 用户使用 Response Buffer True 和 Flush 在我的本地电脑上 这个页面运行得非常好 我已将该页面上传到我的网络服务器 但它不起作用 我唯一能够检查的是两台机器上 IIS 下的 ASP B
  • 我对一些小概念感到困惑

    我对 VBscript 非常陌生 正在努力学习所有概念 在我的实践过程中 我一直有一个疑问 dim a b c set a CreateObject scripting filesystemobject initiate the file

随机推荐