使用模块模式时分配了多少内存
How much memory is allocated when using the Module Pattern?
我想将代码段1重构为代码段2。考虑到大小,我不认为性能是一个很大的问题,但我想了解关于模块模式的重构,内存使用情况如何。
模块模式确保我只从DOM中提取一次数据,这正是我想要的,它还形成了一个小型注册表模式,因为数据是私有的。
这两个片段都经过了测试,基本上都能工作。
代码段1//用SU 替换SUniversals
var SUniversals = function () {
// Pull from Server
this.universals.path = document.getElementById('universals').getAttribute('data-path');
this.universals.load = document.getElementById('universals').getAttribute('data-load');
// Set Manually
this.universals.debug = false;
};
SUniversals.prototype.universals = {};
SUniversals.prototype.get = function( key ) {
return this.universals[ key ];
};
SUniversals.prototype.set = function( key, value ) {
this.universals[ key ] = value;
};
代码段2
var SU = ( function ()
{
// private SU.get('load');
var universals = {};
universals.path = document.getElementById('universals').getAttribute('data-path');
universals.load = document.getElementById('universals').getAttribute('data-load');
universals.debug = false;
// pubulic
var publik = {};
publik.get = function( key )
{
return universals[ key ];
};
publik.set = function( key, value )
{
universals[ key ] = value;
};
return publik;
}());
有一些不同之处。代码段2本质上是在创建一个单例。代码段1可以看作是一个"类"。您可以创建"SUniversals"的多个实例/对象,并对它们执行不同的操作。
实际上,就内存而言,代码片段1更高效。通过添加到对象的原型中,无论创建的对象数量如何,每个函数基本上只有一个副本。模块模式将创建单独的实体。
不用担心;-)
说真的,模块模式唯一需要担心的就是内存泄漏;该模式本身基本上不使用任何东西。
相关文章:
- 如何通过溢出来判断元素被切断了多少像素:隐藏在父级上
- 重复应用 d3 转换导致的内存泄漏
- 如何显示在给定极限内存在的所有素数
- IE7中的blockUI插件内存泄漏25kb
- 计算输入中有多少逗号分隔的字符串
- Javascript闭包-如何防止内存泄漏
- 基于订阅的nosql内存数据库
- 显示:阻止/无html元素,css.not从内存中释放
- 使用模块模式时分配了多少内存
- 节点为数组中的空值分配多少内存
- 了解脚本使用了多少内存
- 空的 JavaScript 对象有多少内存
- 我可以在javascript中使用多少内存
- 数字的大小(在内存中)是多少
- JavaScript 声明的函数在脚本加载时消耗多少内存
- 用JavaScript重新创建一个函数需要多少内存
- JS移动:我有多少内存可用
- ExtJS应用程序使用了多少JVM内存java堆空间
- 浏览器实际上可以将多少JavaScript加载到内存中
- 初始化画布的内存命中率是多少