js 发布/订阅模式
2018-02-04 22:13
363 查看
直接上代码
js代码test.jsvar xEvent=(function(){ function xEvent(){ this._events={}; } xEvent.prototype={ emit:function(name,obj){ if(name in this._events){ for(var i=0;i<this._events[name].length;i++){ this._events[name][i](obj); } } }, on:function(name,callback){ if(!(name in this._events)){ this._events[name]=[]; } this._events[name].push(callback); }, remove:function(name,callback){ this._events[name]?this._events[name].splice(this._events[name].indexOf(callback), 1) : void 0; }, removeAll:function(name){ this._events[name]=[] } } return xEvent; })();
测试代码test.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>js发布/订阅模式</title> </head> <body> <script src="./test.js"> </script> <script> var event=new xEvent(); var test0=function(res){ console.info('test0-----监听',res); }; var test1=function(res){ console.info('test1-----监听',res); }; console.info('test0--------------------------start'); event.on('test0',test0); event.emit('test0',{ code:0, msg:'test0---0', data:null }); console.info('test1-------------------移除监听测试'); event.on('test1',test1); event.remove('test1'); event.emit('test1',{ code:1, msg:'test1---1', data:null }); </script> </body> </html>
测试结果
test0--------------------------start test.html:15 test0-----监听 {code: 0, msg: "test0---0", data: null} test.html:31 test1-------------------移除监听测试
相关文章推荐
- node.js 发布订阅模式
- JS发布订阅模式
- 学习笔记-js发布/订阅模式的简单实现
- node.js 发布订阅模式的实例
- JS设计模式 - 观察者模式与发布/订阅模式
- js 发布订阅模式的实例讲解
- js发布——订阅模式
- js设计模式中发布与订阅实现观察者模式例子
- JS模式之发布/订阅模式
- JS设计模式之发布订阅模式
- js发布——订阅模式的通用实现及取消订阅
- js全局的发布——订阅模式
- node.js笔记之订阅发布设计模式
- Js实现订阅发布模式(让你的代码写得贼六)
- js:发布-订阅模式
- 【JS】发布/订阅模式
- js设计模式之代理模式以及订阅发布模式
- js事件编程的发布/订阅模式(一对一关系)
- 基于JS原生的事件订阅和发布模式代码
- [转载]JS中什么是发布--订阅模式?