var Event = (function() {
var clientList = {};
var listen,
trigger,
remove;
listen = function(key, fn) {
if (!clientList[key]) {
clientList[key] = [];
}
clientList[key].push(fn);
};
trigger = function() {
var key = [].shift.call(arguments);
var fns = clientList[key];
if (!fns || fns.length === 0) {
return false;
}
for (var i = 0, fn; fn = fns[i++];) {
fn.apply(this, arguments);
}
};
remove = function(key, fn) {
var fns = clientList[key];
if (!fns) {
return false;
}
if (!fn) {
fns && (fns.length = 0);
}
else {
for (var i = fns.length - 1; i >= 0; i--) {
var _fn = fns[i];
if (_fn === fn) {
fns.splice(i, 1);
}
}
}
};
return {
listen: listen,
trigger: trigger,
remove: remove
}
}());
分享到:
相关推荐
js发布订阅模式
javaScript发布订阅模式代码实现思路,有平台,发布者,订阅者
JavaScript手写发布订阅
主要介绍了js实现的订阅发布者模式,结合完整示例形式分析了js订阅发布者模式相关实现与使用方法,需要的朋友可以参考下
实例如下: //导入内置模块 let EventEmitter = require('events'); let util=require('util'); //Man继承EventEmitter util.inherits(Man,EventEmitter); //创建一个函数 function Man(){} ...man.on('失恋',findGirl...
js代码-实现发布/订阅模式
原生js观察者模式的的实现,主要用来管理回调函数队列,参考jquery的callbacks模块
//发布订阅模式 class EventEmiter{ constructor(){ //维护一个对象 this._events={ } } on(eventName,callback){ if( this._events[eventName]){ //如果有就放一个新的 this._events[eventName].push...
onfire.js 是一个很简单的事件分发的Javascript库(仅仅 0.9kb),简洁实用。 可以用于: 简单的事件分发; 在 react / vue.js / angular 用于跨组件的轻量级实现; 事件订阅...
本文实例讲述了JavaScript实现与使用发布/订阅模式。分享给大家供大家参考,具体如下: 一、发布/订阅模式简介 发布/订阅模式(即观察者模式): 设计该模式背后的主要动力是促进形成松散耦合。在这种模式中,并不是...
发布订阅 纯 javascript 发布/订阅模块。
pubAndSub.js 基于浏览器内置API实现的发布订阅模式封装
这是我自己对事件订阅/发布模式的一种实现,不过只是很基础的,并且仅仅用作学习练习之用
主要介绍了JS模式之简单的订阅者和发布者模式,以一个完整实例形式详细分析了JS订阅者和发布者模式基本实现技巧,需要的朋友可以参考下
小而美的pubsub库,发布订阅者模式
CommonJS 发布订阅 一个非常小的酒吧子库,全心全意地从 David Walsh 那里窃取了它的所有想法(和大量代码)。 它已经升级,因此它可以一直工作到 IE8,因此缺少hasOwnProperty 。 您可以在找到原始代码。 安装 npm ...
SoctJS.js stomp.js 前端消息订阅
简单发布 基本的Javascript发布/订阅模块这已成为,将不再作为单独的模块进行开发原料药订阅(主题,回调)Subscription.prototype.unsubscribe()发布(主题,数据)getSubscriptionCount(topic)