发布订阅模式小练习-自定义事件

function Event() {
    this._events = {};
}
Event.prototype.on = function(eventName, callback) {
    if (this._events[eventName]) {
        // 存放多个相同事件
        this._events[eventName].push(callback);
    } else {
        this._events[eventName] = [callback];
    }
}
Event.prototype.emit = function(eventName) {
    var args = Array.prototype.slice.call(arguments).splice(1); // 获取第一个参数外的人所有参数
    // 调用事件
    if (this._events[eventName]) {
        this._events[eventName].forEach(fn => fn(args));
    }
}

var ev = new Event();

ev.on('eat', function(data) {
    console.log('eat事件被触发');
    console.log(data);
});

ev.emit('eat', 'rice');
打赏支持

如果文章对你有帮助就打个赏吧~

[微信] 扫描二维码打赏

[支付宝] 扫描二维码打赏

评论

还没有任何评论,你来说两句吧

发表评论

Powered By Yuuk