Javascript 模块声明 - 性能
Javascript Module declaration - performance
我正在尝试在以下编写JS模块的方式之间做出决定。在内存和 CPU 上编写模块的含义是什么?第二个会在浏览器中占用更多内存吗?
使用函数声明
function MyModule () {
this.getOperation1 = operation1;
function operation1() {
return "XYZ"
}
}
使用变量定义
var MyModule = {
getOperation1: function() {
return "XYZ"
}
}
内存方面,它们大致相同 - 两者都创建一个对象。
然而:
-
您只能将
new
与基于函数的模块格式一起使用。 后者只创建单个对象,而不是可用于创建其他实例的构造函数。 -
使用函数,您可以将私有局部变量包含在作用域中。
但是,在大多数情况下,更好的方法是:
function MyModule () {
}
MyModule.prototype.getOperation1 = function() {
...
}
这可确保在创建多个实例时,它们都仅共享 getOperation1
函数的一个副本。
也就是说,如果您尝试做的只是为函数命名,并且它们不会自然地形成"对象"(在 OOP 意义上(,那么您也可以使用对象文字语法。
参考这个 yui 博客以获取与内存相关的参数
从同一
通过使用 new 调用函数,对象保留了一个毫无价值的 原型对象。这会浪费内存,没有抵消优势。如果 我们不使用新的,我们不保留浪费的原型对象 链条
如@Alnitak所述,如果您准备实现constructor
函数,请使用prototype
对象,以便所有实例共享同一对象。
要检查 CPU 明智 [速度],请使用 www.jsperf.com 并进行性能测试。一些已经可用的测试函数调用,Object.create vs new ,通用
相关文章:
- 函数参数中的数据与指定变量之间的任何性能差异
- 提高JQuery的性能
- Dojo不解析自定义小部件的模板html中的小部件声明性
- 直接在函数声明上使用function.prototype.bind
- 使用正则表达式评估电子邮件地址时出现性能问题
- 获取HTML属性中CSS声明的值
- React:按键的性能提升
- 在Three.js中导出网格会提高性能吗
- 对API数据使用声明性绑定
- 在javascript中搜索项目列表的性能
- 为什么在许多浏览器中drawImage()的性能略好于createPattern()
- 函数声明与函数表达式之间的性能差异
- 从性能的角度来看,函数声明与表达式
- Javascript 模块声明 - 性能
- 出于性能原因,我是否应该避免多次执行相同的函数声明
- 循环中javascript中函数声明与函数表达式的性能
- Node js事件监听器.使用匿名回调或声明函数来提高性能
- 面向对象Javascript /变量声明/性能
- 在 v8 中声明具有未知值的(类)属性的最佳(性能最高)方法
- 使用单个或多个var语句声明变量.性能明智