我试图在以下方式之间决定编写JS模块。在内存和CPU上编写模块有什么含义。第二个会在浏览器中占用更多内存吗?
使用函数声明
function MyModule () {
this.getOperation1 = operation1;
function operation1() {
return "XYZ"
}
}
使用变量定义
var MyModule = {
getOperation1: function() {
return "XYZ"
}
}
答案 0 :(得分:1)
记忆明智他们关于相同 - 都创造了一个对象。
然而:
您只能将new
与基于功能的模块格式一起使用。后者只创建一个对象,而不是可用于创建其他实例的构造函数。
使用函数,您可以将私有局部变量括在范围内。
然而,在大多数案例中,更好的方法是:
function MyModule () {
}
MyModule.prototype.getOperation1 = function() {
...
}
确保如果您创建多个实例,则它们只共享 getOperation1
函数的一个副本。
也就是说,如果您要做的就是命名功能,并且它们不会自然形成一个"对象' (在OOP意义上)那么你也可以使用对象文字语法。
答案 1 :(得分:1)
请参阅此yui-blog以获取与内存相关的参数
来自同一个
通过使用new来调用函数,该对象保持无用 原型对象。这浪费了记忆,没有抵消优势。如果 我们不使用新的,我们不保留浪费的原型对象 链
正如@Alnitak所提到的那样,使用prototype
对象可以实现constructor
函数,以便所有实例共享同一个对象。
要检查CPU智能[速度],请使用www.jsperf.com并进行性能测试。一些已经可用的测试 Function Invocation, Object.create vs new, Generic