亚洲免费在线视频-亚洲啊v-久久免费精品视频-国产精品va-看片地址-成人在线视频网

您的位置:首頁技術文章
文章詳情頁

原生js實現的觀察者和訂閱者模式簡單示例

瀏覽:116日期:2024-05-12 15:49:39

本文實例講述了原生js實現的觀察者和訂閱者模式。分享給大家供大家參考,具體如下:

觀察者模式也叫 發布者-訂閱者模式,發布者發布事件,訂閱者監聽事件并做出反應

在傳統的前端解耦方面,觀察者模式作為比較常見一種設計模式,大量使用在各種框架類庫的設計當中。

核心代碼:

// eventProxy.js’use strict’;const eventProxy = { onObj: {}, oneObj: {}, on: function(key, fn) { if(this.onObj[key] === undefined) { this.onObj[key] = []; } this.onObj[key].push(fn); }, one: function(key, fn) { if(this.oneObj[key] === undefined) { this.oneObj[key] = []; } this.oneObj[key].push(fn); }, off: function(key) { this.onObj[key] = []; this.oneObj[key] = []; }, trigger: function() { let key, args; if(arguments.length == 0) { return false; } key = arguments[0]; args = [].concat(Array.prototype.slice.call(arguments, 1)); if(this.onObj[key] !== undefined && this.onObj[key].length > 0) { for(let i in this.onObj[key]) { this.onObj[key][i].apply(null, args); } } if(this.oneObj[key] !== undefined && this.oneObj[key].length > 0) { for(let i in this.oneObj[key]) { this.oneObj[key][i].apply(null, args); this.oneObj[key][i] = undefined; } this.oneObj[key] = []; } }}; export default eventProxy;

使用:引入全局事件類,或通過配置webpack將事件類設置為全局變量

import { eventProxy } from ’@/utils’ class Parent extends Component{ render() { return ( <div style={{marginTop:'50px'}}> <Child_1/> <Child_2/> </div> ); }}// componentDidUpdate 與 render 方法與上例一致class Child_1 extends Component{ componentDidMount() { setTimeout(() => { // 發布 msg 事件 console.log(eventProxy) eventProxy.trigger(’msg’, ’end’,’lll’); }, 5000); } render() { return ( <div>我是組件一</div> ) }}// componentDidUpdate 方法與上例一致class Child_2 extends Component{ state = { msg: ’start’ }; componentDidMount() { // 監聽 msg 事件 eventProxy.on(’msg’, (msg,mm) => { console.log(msg,mm) this.setState({ msg:msg }); }); } render() { return <div> <p>child_2 component: {this.state.msg}</p> </div> }}

參考:淘寶前端團隊技術庫

感興趣的朋友可以使用在線HTML/CSS/JavaScript代碼運行工具:http://tools.jb51.net/code/HtmlJsRun測試上述代碼運行效果。

更多關于JavaScript相關內容感興趣的讀者可查看本站專題:《javascript面向對象入門教程》、《JavaScript錯誤與調試技巧總結》、《JavaScript數據結構與算法技巧總結》、《JavaScript遍歷算法與技巧總結》及《JavaScript數學運算用法總結》

希望本文所述對大家JavaScript程序設計有所幫助。

標簽: JavaScript
相關文章:
主站蜘蛛池模板: 国产一级视频久久 | 亚洲在成人网在线看 | 亚洲欧美激情在线 | 免费观看成年人网站 | 亚洲成av人影片在线观看 | 日韩欧美一区二区三区在线 | 女人国产香蕉久久精品 | 亚洲欧美自拍视频 | 玖玖玖视频在线观看视频6 玖玖影院在线观看 | 最爽的乱淫片免费 | 欧美精品成人一区二区视频一 | 91成人午夜在线精品 | 狠狠色狠狠色狠狠五月ady | 456亚洲视频 | 国产精品青草久久 | 日韩精品一区二区在线观看 | 最新69成人精品毛片 | 成年女人看片免费视频频 | 欧美一区二区三区在观看 | 日本高清色视频www 日本高清在线精品一区二区三区 | 91不卡在线精品国产 | 91久久福利国产成人精品 | 亚洲天堂视频一区 | 国产精品高清视亚洲一区二区 | 成人网视频免费播放 | 牛人盗摄一区二区三区视频 | 国产成人精品综合久久久软件 | 亚洲欧美日韩中文字幕在线 | 久久91精品国产一区二区 | 国产韩国精品一区二区三区久久 | 日韩在线观看一区二区三区 | 日韩精品一区二区三区视频 | 国内精品久久久久不卡 | 久久精品一区二区三区四区 | 国产精品成人久久久 | 亚洲伊人色一综合网 | 经典香港一级a毛片免费看 精品400部自拍视频在线播放 | 精品久久成人免费第三区 | 国产午夜精品久久理论片 | 美国一级毛片oo | 狠色狠狠色狠狠狠色综合久久 |