我想将Snippet 1重构为Snippet 2.考虑到大小,我不认为性能是一个很大的问题,但我想了解内存使用对于模块模式的重构有何影响
模块模式确保我只从DOM中提取一次这是我想要的数据,它也形成了一个迷你注册表模式,因为数据是私有的。
两个片段都经过测试,基本上可以正常使用。
Snippet 1 //替换SU / SU的SUniverisals
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;
};
Snippet 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;
}());
答案 0 :(得分:2)
有一些不同的东西。 Snippet 2基本上是创建一个单例。片段1可以看作是一个类'。您可以创建' SUniversals'的多个实例/对象。并与他们做不同的事情。
实际上,代码段1在内存方面更有效。通过添加到对象的原型,无论您创建的对象数量多少,您基本上只能拥有每个函数的1个副本。模块模式将创建单独的实体。
答案 1 :(得分:1)
不足以担心; - )
说真的,你唯一需要担心的是模块模式是造成内存泄漏;模式本身基本上没用。