我正在尝试在以下编写 JS 模块的方法之间做出决定。在内存和 CPU 上编写模块有何影响?第二个会占用更多浏览器内存吗?
使用函数声明
function MyModule () {
this.getOperation1 = operation1;
function operation1() {
return "XYZ"
}
}
使用变量定义
var MyModule = {
getOperation1: function() {
return "XYZ"
}
}
最佳答案
在内存方面,它们大约相同 - 都创建一个对象。
但是:
您只能将
new
与基于函数的模块格式一起使用。后者仅创建单个对象,而不是可用于创建其他实例的构造函数。使用函数,您可以将私有(private)局部变量包含在作用域中。
但是,在大多数情况下,更好的方法是:
function MyModule () {
}
MyModule.prototype.getOperation1 = function() {
...
}
这确保如果您创建多个实例,它们都只共享 getOperation1
函数的一个副本。
也就是说,如果您想要做的只是为函数命名空间,并且它们不会自然地形成“对象”(在 OOP 意义上),那么您也可以使用对象字面量语法。
关于Javascript 模块声明 - 性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10701869/