代码拉取完成,页面将自动刷新
'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];
}
}
};
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。