JavaScript清理“”中引用的(本地)对象;延迟的“;功能
JavaScript clean up of (local) objects referenced in "delayed" functions
JavaScript(如果重要的话,是纯的,而不是jQuery)知道从计时器或事件调用的"延迟"函数中对对象的最后一次引用中清除/free/release吗?
取以下代码:
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;
,以最大限度地减少浪费?
是的,您不需要清理该引用。如果您担心您的JS代码可能存在内存泄漏,那么您可能应该阅读内存评测。
相关文章:
- 引用对象中的通用值
- jQuery匹配JSON对象的部分文本
- 节点导出返回一个空对象
- 如何在Javascript中将JSon对象转换为数组
- 我可以在json对象中添加一个函数吗
- 使用JS将数组转换为json对象
- 全局变量和全局对象的属性之间有什么区别吗
- 比较从函数和生成的日期对象
- Javascript,访问一个主要对象模块模式中的每个对象
- JavaScript清理“”中引用的(本地)对象;延迟的“;功能
- 清理在构造函数中引发错误的对象
- 数据清理 JavaScript 对象
- 如何清理节点中的对象数组?手动遍历它返回“对象对象”
- 创建一个联系人数据数组的已清理联系人对象
- 对象数组中的数据清理:无法进行循环工作
- javascript对象MVC画布'类'清理
- 如何清理XML对象以避免“序言中不允许的内容”;错误
- 在删除对象之前运行Javascript清理代码
- 清理对象数组
- Ajax(XMLHttpRequest)对象在使用后进行清理