Каков порядок уничтожения объектов в VBScript?

В каком порядке уничтожаются объекты в .vbs?

То есть, учитывая эти глобальные переменные:

Set x = New Xxx
Set y = New Yyy

Меня интересуют ответы на любые из следующее.

  1. Для экземпляров классов, реализованных в .VBS, в каком порядке будет вызываться Class_Terminate ? Беглое тыкание предлагает в порядке ( не обратный порядок!) Создания, но гарантируется ли это?

    EDIT : Я понимаю, что Class_Terminate будет вызываться, когда последний освобождается последняя ссылка на объект. Я имел в виду: в каком порядке будут выпущены x и y и гарантируется ли это? Предположим для простоты, что x и y - единственные ссылки на соответствующие объекты .

  2. Имеет ли значение тип объекта? например, если у меня есть классы, реализованные в .VBS, смешанные с другими COM-объектами, такими как Scripting.FileSystemObject .

    EDIT : я понимаю, что COM-библиотека может создавать свои собственные внутренние циклические ссылки что механизм хоста сценария ничего не знает; Мне интересно узнать, что может повлиять на ответ на первый вопрос.

  3. Отличаются ли ответы на вышеупомянутые, если x и y были локальными для Sub или Function, а не глобальными?
  4. Зависит ли это от того, выход нормальный, в порядке исключения или через WScript.Quit ? (В последнем случае кажется, что Class_Terminate по-прежнему вызывается для любых невыполненных объектов перед выходом, однако это может вызвать сообщение об ошибке).
  5. Когда уничтожается объект WScript?
  6. Имеет ли значение хост сценария? (wscript.exe vs cscript.exe против того, что называется движком веб-хоста)
  7. Отличается ли модель уничтожения объектов JScript от модели VBScript?

Я могу найти ответы на некоторые из этих вопросов эмпирически, но мне интересно в том, являются ли какие-либо из них гарантированными / задокументированными.

Публикуйте сообщения, даже если вы знаете только некоторые ответы - или другие важные вопросы.

5
задан bacar 22 September 2010 в 01:14
поделиться