Ai
1 Star 0 Fork 1

41ZONE/node-applicationcontext

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
index.js 1.84 KB
一键复制 编辑 原始数据 按行查看 历史
iamthe9 提交于 2014-09-25 01:59 +08:00 . publish
'use strict';
var extend = require('extend');
var events = require('events');
var CONTEXT = {};
var emitter = new events.EventEmitter(CONTEXT);
module.exports = {
on : function(key,listener) {
if(!this.exist(key)) return ;
emitter.on(key,listener);
},
emit : function(key,message) {
if(!this.exist(key)) return ;
var value = this.get(key);
emitter.emit(key,value,message);
},
off : function(key,listener){
if(typeof key !== 'string') return ;
if(arguments.length == 1) {
emitter.removeAllListeners(key);
} else if (arguments.length >= 2) {
emitter.removeListener(key,listener);
}
},
_getParent : function(key){
if(typeof key !== 'string') return undefined;
var keys = key.split(".") , temp = CONTEXT , result = true , length = keys.length;
for(var i = 0;i<length-1; i ++) {
if(!(keys[i] in temp)) {
return undefined;
}
temp = temp[keys[i]];
}
return {parent:temp,key : keys[length-1]};
},
exist : function(key) {
var item = this._getParent(key);
if(!item) return false;
return item.key in item.parent;
},
set : function(key,value) {
var type = typeof key , item;
if(type === 'string') {
item = this._getParent(key);
if(!item) {return this;}
item.parent[item.key] = value;
} else if (type === 'object') {
extend(true,CONTEXT,key);
}
return this;
},
get : function(key) {
var item , result;
if(arguments.length <= 0) {
result = {};
extend(true,result,CONTEXT);
return result;
}
item = this._getParent(key);
if(!item) return undefined;
return item.parent[item.key];
},
remove : function(key) {
var item = this._getParent(key);
if(!item) return undefined;
delete item.parent[item.key];
},
clear : function(){
for(var key in CONTEXT){
delete CONTEXT[key];
}
}
};
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
JavaScript
1
https://gitee.com/41zone/node-applicationcontext.git
git@gitee.com:41zone/node-applicationcontext.git
41zone
node-applicationcontext
node-applicationcontext
master

搜索帮助