具有私有/公共方法的高效Javascript模块模式
Efficient Javascript Module pattern with private/public methods
我正在探索在编写Javascript模块时考虑性能的方法。
//我的libvar MyModule=函数(回调({var计数=0;main((//在我看来很难看//函数我想公开。函数main(({计数++;window.specialApi.doWorkAndCallback(秘密(;//…}//我想保密的功能//它需要访问计数器变量(#closure(函数secret(({如果(计数===2({callback((;}}//私人功能//其他私人功能//…};//以后任何其他人都可以使用MyModule。MyModule(function(({console.log("ok"(;}(;
我在这里发现的问题是,每次调用MyModule((时,JS VM都会重新解释整个函数列表,这对性能不利。
有没有一种模式可以让我做以下事情:
- 显示main函数
- 请将机密功能保密。请注意可能强化任务的计数器变量
- 只分析一次MyModule
感谢
以下函数创建并返回一个对象,该对象仅包含main
方法:
var MyModule = function(callback){
var count = 0;
var secret = function(){
if(count === 2){
callback();
}
}
var main = function(){
count ++;
window.specialApi.doWorkAndCallback(secret);
}
main();
return {
main: main
};
};
然后,你唯一要做的就是调用这个函数一次,并将它的返回值存储在一个变量上:
var module = MyModule(function(){console.log('ok');});
最后,每当您想调用main
(并保留count
的旧值(时,只需执行:
module.main();
//My lib
var modul =
{
count:0,
callback:{},
main: function(){
this.count ++;
window.specialApi.doWorkAndCallback(this.secret);
},
secret: function(){
if(this.count === 2){
this.callback();
}
}
};
modul.callback = function(){console.log("ok");};
modul.main();
modul.callback = function(){console.log("ok");};
modul.main();
modul.callback = function(){console.log("ok");};
modul.main();
modul.callback = function(){console.log("ok");};
modul.main();
http://jsbin.com/emitoj/3/edit
相关文章:
- 在JavaScript中高效地删除对象
- 高效灵活的Javascript库,用于查询允许聚合的大型JSON文件
- Javascript:如何高效/正确地卸载jsonify
- Javascript高效模式打印
- 在JavaScript中,最紧凑、最优雅、最高效的四舍五入方式是什么
- Javascript继承和封装,高效完成
- 用于 DOM 修改的高效 Javascript
- 如何在 JavaScript 中编写高效的事件回调方法
- 用于高效插入和搜索的 Javascript 数据结构
- 高效的Javascript组合函数,不会使浏览器崩溃
- HTML 5 canvas JavaScript rain animation(如何高效轻松地实现!).
- JavaScript 单击事件、按键事件和文档就绪 - 使函数更高效
- 高效的 JavaScript 事件跟踪
- 在 express/node.js API 中进行高效的服务器端 JavaScript 内存管理
- 使用 Javascript/Jquery 创建高效的 Tab 切换
- 高效安全的Javascript按位/移位操作
- 用于更改列表项的内部dom元素的Javascript高效方法
- 使用多个数组索引进行高效的Javascript对象筛选.使用Node之前的数据量
- 在JavaScript中,从美元金额中提取数字的最紧凑、最高效、最可靠的方法是什么
- 具有私有/公共方法的高效Javascript模块模式