Javascript Module declaration - performance
我试图在以下两种编写JS模块的方法之间做出决定。在内存和CPU上写一个模块意味着什么?第二个会占用更多的浏览器内存吗?
使用函数声明
1 2 3 4 5 6 | function MyModule () { this.getOperation1 = operation1; function operation1() { return"XYZ" } } |
使用变量定义
1 2 3 4 5 | var MyModule = { getOperation1: function() { return"XYZ" } } |
有关与内存相关的参数,请参阅此yui博客
从同一
By using new to invoke the function, the object holds onto a worthless
prototype object. That wastes memory with no offsetting advantage. If
we do not use the new, we don’t keep the wasted prototype object in
the chain
正如@alnitak所提到的,如果您要实现
要检查CPU方面的[speed],请使用www.jsferf.com并进行性能测试。一些已经可用的测试函数调用,object.create与new,通用的
内存方面,它们差不多是一样的——都创建了一个对象。
然而:
您只能将
通过函数,您可以将私有局部变量包含在范围中。
然而,在大多数情况下,更好的方法是:
1 2 3 4 5 6 | function MyModule () { } MyModule.prototype.getOperation1 = function() { ... } |
这样可以确保如果创建多个实例,它们都只共享
也就是说,如果您所要做的只是为函数命名,而它们并不是自然形成一个"对象"(在OOP意义上),那么您也可以使用对象文本语法。