.vbs中对象的销毁顺序是什么?
也就是说,给定以下全局变量:
Set x = New Xxx
Set y = New Yyy
我对以下任何问题的答案都感兴趣。
在.VBS中实现的类的实例中,
Class_Terminate
将按照什么顺序被调用?初步探索表明是按创建的顺序(而不是反向顺序!),但这是否有保证?编辑:我知道当最后一个对象引用被释放时,将会调用
Class_Terminate
。我的意思是:x和y将以什么顺序被释放,并且这是否有保证?为简单起见,假设x和y是它们各自对象的唯一引用。对象的类型是否重要?例如,如果我在.VBS中实现的类与其他COM对象混合在一起,例如
Scripting.FileSystemObject
。编辑:我知道COM库可能设置自己的内部循环引用,脚本主机引擎对此一无所知;我想探索影响第一个问题答案的因素。
如果x和y是局部变量而不是全局变量,上述答案是否有所不同?
是否取决于退出方式是正常退出、异常退出还是通过
WScript.Quit
退出?(在后一种情况下,似乎仍会在退出之前调用Class_Terminate
,但这可能导致报告错误)。WScript对象何时被销毁?
脚本主机是否重要?(wscript.exe与cscript.exe相比以及Web主机引擎的任何名称)
JScript的对象销毁模型是否与VBScript的不同?
我可以通过实证找到一些问题的答案,但我对其中是否有任何问题是保证 / 文档化感兴趣。
即使您只知道其中一些答案或其他相关问题,请发帖。