SOURCE

const OB = (function() {
    let messages = {}
    return {
        // 注册消息
        register: function(type,fn) {
            if(messages[type]) {
                messages[type].push(fn)
            } else {
                messages[type] = [fn]
            }
        },
        // 移除注册消息
        remove: function(type,fn) {
            if(!messages[type]) return
            messages[type].forEach((fnx,ix) => {
                fnx === fn && messages[type].splice(ix,1)
            })
        },
        // 发布消息
        fire: function(type, data) {
            if(!messages[type]) return
            messages[type].forEach(fn => {
                fn(data)
            })
        },
    }
})()

OB.register('login',function(data) {
    console.log(data)
})




// var a = function() {}
// var b = function() {}
// var c = a

// console.log(a === b)
// console.log(a === c)
console 命令行工具 X clear

                    
>
console