我正在玩Windows Script Host VBScript,并且我很好奇VBScript是否可以添加/删除像JScript这样的属性。VBScript可以将属性添加到像JScript这样的对象吗?
例如:
var global = this;
var test = function() {
if ('greeting' in global) {
WScript.echo (
'global has property named greeting with value: ' +
global.greeting +
'.'
);
} else {
WScript.echo('global has no property named greeting.');
}
};
test();
global.greeting = 'Hello, World!';
test();
delete global.greeting;
test();
这个代码决定了全球范围内(JScript中具有全局范围内没有初始接入,如浏览器窗口或在全球Node.js的,所以我必须找到它自己)。
test()
函数检查全局对象是否有名为“greeting”的键,并将其当前状态报告为输出。
该代码执行初始测试以显示全局对象没有问候键,然后设置问候属性,然后执行第二个测试以显示问候键已添加到全局对象。之后,问候属性将被删除,并运行第三个测试以显示该密钥不再是全局对象的一部分。
这是可能在VBScript中复制吗?
我知道的VBScript具有可用于存储这些信息Scripting.Dictionary
的对象,但我很好奇,如果有一种方法在VBScript挂钩具有新特性的现有对象和删除这种特性,或者VBScript中没有平行的JScript的{}
构造不是Scripting.Dictionary
或类(其属性是不可变的)。
好的。这说得通。 VBScript使用类似simula的对象模型,而JScript使用类似于小型对象的对象模型。 VBScript对象具有严格的接口并且没有原型。 JScript对象是字典,而JScript不会将函数视为动词,因此允许将它们自然地添加到映射中,而将函数/子分配给vbscript中的变量很奇怪(较新的VB有委托,但它们仍然非常严格键入,而JScript不关心函数的输入/输出以回调形式传递它)。 – Dmitry
体面的解释。 – Lankymart