内存管理——JavaScript模式和垃圾收集
memory management - JavaScript patterns and garbage collection
一段时间以来,我一直在使用两个版本的JavaScript模式,我从Addy Osmani那里获得了模块模式。点击这里查看
这个模式的第一个版本使用对象字面值:
var x = {
b: function() {
return 'text';
},
c: function() {
var h = this.b();
h += ' for reading';
}
}
alert(x.b()) // alerts text.
而另一个版本使用自执行函数:
var y = (function() {
var first = 'some value';
var second = 'some other value';
function concat() {
return first += ' '+second;
}
return {
setNewValue: function(userValue) {
first = userValue;
},
showNewVal: function() {
alert(concat());
}
}
})();
y.setNewValue('something else');
y.showNewVal();
考虑到上面的例子,这两种模式(不考虑任何事件侦听器)中的任何一种都是垃圾收集友好的(考虑到它们引用自己的方式)吗? No。
两者都使用一个全局变量来固定API,因此在帧被卸载并从历史记录中删除之前将无法收集。
第二个分配并保持一个额外的激活帧(用于模块本地first
和second
),但这是一个相当小的成本。
相关文章:
- Javascript,访问一个主要对象模块模式中的每个对象
- 如何在elfinder插件(一个文件管理器插件)上获得上传前事件
- 是否有任何snippet或jQuery插件可以列出easylist.txt模式匹配的DOM中的所有元素
- 如何访问声音管理器2创建的声音对象
- 试图在引导模式内动态生成图表,得到offsetWidth错误
- 同位素库错误:未捕获错误无布局模式包装生产线8
- JS编译器/包管理器,用于版本控制
- 谷歌跟踪代码管理器使用什么模式来观察 de 'dataLayer' 数组
- PM2 管理 PHP 脚本 - 集群模式
- 在绘图中更改“绘图模式”谷歌地图v3的管理器
- 响应式文件管理器.防止在选择图像时模式关闭
- 是否有管理并行AJAX查询的设计模式
- 使用生成器和迭代器管理流的正确模式是什么
- 是否有一个模式来管理javascript同步和异步调用
- 以编程方式在管理模式下打开IE
- 用于管理多个异步JavaScript操作的设计模式
- TinyMCE窗口管理器-带有滚动条的模式
- 是否有管理事件的“量子状态变化”的有用模式?(特别是在JavaScript中)
- 内存管理——JavaScript模式和垃圾收集
- 是否有一个通过websockets管理资源的既定模式?