欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

js观察者模式实现vueJs中父子组件间通信自定义事件

程序员文章站 2024-01-14 12:02:28
...
观察者模式

观察者模式是一种创建松散耦合代码的技术,它定义对象间一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知。由主体和观察者组成,主体负责发布事件,同时观察者通过订阅这些事件来观察该主体。主体并不知道观察者的任何事,观察者知道主体并能注册事件的回调函数。

*代码实现

<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>
   <script type="text/javascript">
      var Even = {
        handles: {}, //创建一个事件管理器函数对象

        //通过on接口监听事件eventName
        //如果事件eventName被触发,则执行callbacks回调函数
        on: function(evenName, callbacks) {
            if(!this.handles) {
                this.handles = {};
            }
            if(!this.handles[evenName]) {
                this.handles[evenName] = [];
            }
            this.handles[evenName].push(callbacks);
        },
        //触发事件 eventName
        emit: function(evenName) {
            if(this.handles[arguments[0]]) {
               for(var i = 0; i<this.handles[arguments[0]].length; i++) {
                  this.handles[arguments[0]][i](arguments[1]);
               }
            }
        }
      }
      Even.on("test",function(result) {
        console.log(result)
      })
       Even.on("test",function() {
        console.log(111)
      })
      Even.emit("test","hello");
   </script>
</body>
</html>