函数执行后,在函数中创建的对象是否被销毁?

时间:2019-04-08 22:37:54

标签: javascript

这可能不是一个典型的问题,因为它是关于Javascript的,它必须在使用旧IE引擎的Windows 7 Widget引擎下运行(不记得有多老了)。 我想做的是从硬盘中列出一些文件。一切正常,但这只是我的问题的示例。

正如您在代码中看到的那样,我正在创建ActiveXObject和Enumerator的实例。从理论上讲,在执行此函数后,应该销毁所有这些对象,因为应删除函数堆栈中保留的所有引用。但这似乎在这里不是很有效。

我为什么这么认为?因为此小部件在运行了数周而不重启的机器上工作,并且随着时间的推移,sidebar.exe进程占用了越来越多的内存(功能f_scanrec每隔几天运行一次,所以我确定不是其他事情在增长) ,我花了几个月的时间来弄清楚)。如果不运行此功能,sidebar.exe的内存大小将保持不变。

在Javascript中,我无法手动删除创建的对象。那么,我该怎么办,它在这里如何工作?

function f_scanrec(vS_path) {
    var vO_scanfs = new ActiveXObject("Scripting.FileSystemObject");
    var vO_dir = vO_scanfs.GetFolder(vS_path);
    var vO_enum = false;

    vO_enum = new Enumerator(vO_dir.SubFolders);
    for (; !vO_enum.atEnd(); vO_enum.moveNext()) {
        f_scanrec(vO_enum.item().Path);
    }
    vO_enum = new Enumerator(vO_dir.Files);
    for (; !vO_enum.atEnd(); vO_enum.moveNext()) {
/* Do something with this enumerator, but no more recursion calls */
    }
}

我将不胜感激,并感谢您提供任何有关此信息。

0 个答案:

没有答案