简单的来说一下在别人问你这个问题的时候怎么来回答它
前端新人,如有错误求大佬指出~求教💝
情景复现
大佬提问:“你知道Vue发布订阅模式是什么吗?"
我的回答:“发布订阅模式其实是一种对象间一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到状态改变的通知。具体过程就是订阅者把自己想订阅的事件注册到调度中心,当发布者发布该事件到调度中心,也就是该事件触发时,由调度中心统一调度订阅者注册到调度中心的处理代码,体现在Vue中典型的发布订阅模式就是兄弟间传参”

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head><body><script>class Event {clientlist = {}// $on 用来订阅事件,因为$on可以使用多次,所以需要将$on的事件和事件函数进行记录// eventName: 事件名// callback: 事件回调$on = function (eventName, callback) {// 先判断记录的数据中是否存在该事件if (!this.clientlist[eventName]) {// 如果不存在 添加该事件 值用数组记录(因为,同一个事件可以注册多次)this.clientlist[eventName] = [callback]} else {// 如果存在 找到该事件,给该事件的数组追加回调this.clientlist[eventName].push(callback)}}// eventName: 事件名// val: 给该事件传递的数据$emit = function (eventName, val) {// 先判断该事件是否有记录,有记录,代表用过$on订阅注册事件if (!this.clientlist[eventName]) {return false}// 有事件// 将clientlist中对应的事件找到获取到回调数组// 循环回调数组this.clientlist[eventName].forEach((callback) => {// 调用回调将emit传递过来的数据传递给事件回调callback(val)})}}const event = new Event()// 订阅事件event.$on('onGetMsg', function (msg) {console.log(msg)})event.$on('onGetMsg', function (msg) {console.log(msg)})// console.log(event.clientlist)event.$emit('onGetMsg', { color: 'red' })</script>
</body></html>



















