javascript 自定义发布与订阅

本文通过一个生动的例子,展示了如何使用JavaScript实现类的事件监听和触发机制。具体包括:定义一个Girl类,该类拥有事件监听器和触发器;在实例化Girl对象后,可以为其添加多种响应事件的回调函数;当事件被触发时,所有相应的回调函数都将被执行。
//声明一个类,与普通的类的声明不一样,
function Girl() {
    //将类的事件声明成一个私有的属性,里面是一个对象
    this._events = {}
}

/*
  {
    "失恋":["哭","吃","购物"]
  }
*/

Girl.prototype.on = function (eventName,callback) {
    if (this._events[eventName]){
        //如果已经在里面了,说明不是第一次失恋了
        this._events[eventName].push(callback);
    } else{
        this._events[eventName] = [callback,];
    }
};

Girl.prototype.emit = function (eventName,...args) {
    if (this._events[eventName]){
        this._events[eventName].forEach(cb=>cb(...args));
    }
};

// 声明一个实例
let  girl = new Girl();
let  cry = (who)=>{console.log(who+"哭")};
let  eat = (who)=>{console.log(who+"吃")};
let  shoping  = (who)=>{console.log(who+"购物")};

//监听
girl.on("失恋",cry); 
girl.on("失恋",eat);
girl.on("失恋",shoping);

//触发的时候传入应的数据,后面的多个参数就是数据
girl.emit("失恋","殷超");

/*
    监听一个"失恋"的这样一个事件,但是这个事件里面包含多个操作。 
    是一个数组 ["哭","吃","购物"] 
*/

  

转载于:https://www.cnblogs.com/leigepython/p/9156710.html

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值