JavaScript(纯粹的,不是jQuery,如果重要的话)知道清除/释放/释放上一次对#34;延迟"中的对象的引用从计时器或事件调用的函数?
请使用以下代码:
function myInitFunc()
{
var myInitObj = new Object();
myInitObj.properties = lotsOfStuff;
var myDelayedInitFunc = function ()
{
doSomethingWith(myInitObj);
// I shall not be accessing myInitObj again now.
};
// Let's say, *one* of the following:
setTimeout(myDelayedInitFunc, 1000);
window.addEventListener('load', myDelayedInitFunc);
document.addEventListener('DOMContentLoaded', myDelayedInitFunc);
}
请注意,myDelayedInitFunc()
故意访问myInitObj
的本地变量myInitFunc()
。
例如,http://javascript.info/tutorial/memory-leaks表示" setTimeout / setInterval中使用的函数也在内部引用并跟踪直到完成,然后清理"。这是"清理"明白它可以摆脱myInitObj
以及函数本身?我有点猜测它......
这两个事件的例子怎么样?即使我们知道他们是"一次性"事件,我猜测myDelayedInitFunc
和myInitObj
都不会被清除?
如果其中一些不清理,我是否应该myDelayedFunc()
设置myInitObj = null;
,以尽量减少浪费?