【发布时间】:2013-05-30 16:09:25
【问题描述】:
我正在探索编写 Javascript 模块的方法,同时考虑到性能。
//我的库 var MyModule = 函数(回调){ 变量计数 = 0; 主要的(); //在我看来很丑 //我想要公开的函数。 函数主(){ 计数++; window.specialApi.doWorkAndCallback(秘密); //… } //我要保密的函数 //需要访问计数器变量(#closure) 函数秘密(){ 如果(计数 === 2){ 打回来(); } } //私有函数 //其他私有函数 //… }; //以后任何人都可以使用MyModule。 MyModule(function(){console.log("ok");});我在这里发现的问题是每次调用 MyModule() 时,JS VM 都会重新解释整个函数列表,这对性能不利。
是否有一种模式可以让我执行以下操作:
- 公开 main 函数。
- 将 secret 函数保密。请注意可能会强化任务的计数器变量。
- 只解析一次 MyModule
谢谢
【问题讨论】:
-
“JS VM 将重新解释整个函数列表” - 你怎么知道?
-
这是我自己的理解,反正我没有衡量。所以可能是我错了。
-
现代 JavaScript 运行时系统以非常复杂的方式处理代码。一般来说,除非遇到真正的性能问题,否则担心这些事情是没有意义的。然后是时候分解代码分析器了。
-
@Pointy 在我们有很多方法和模块并且整个未压缩的 js 文件重量超过 130KB 并且针对移动平台时,您的回复是否有效?
-
是的,它是有效的。性能问题通常涉及糟糕的算法和/或过度浪费的 DOM 操作。
标签: javascript performance module closures