SOURCE

// var DEvent = (function () {
//     var clientList = {},
//         listen,
//         trigger,
//         remove;
//     listen = function (key, fn) {
//         if (!clientList[key]) {
//             clientList[key] = [];
//         }
//         clientList[key].push(fn);
//     };
//     trigger = function () {
//         var key = Array.prototype.shift.call(arguments),
//             fns = clientList[key];
//         if (!fns || fns.length === 0) {
//             return false;
//         }

//         for (let index = 0; index < fns.length; index++) {
//             const fn = fns[index];
//             fn.apply(this, arguments);
//         }
//     };
//     remove = function (key, fn) {
//         var fns = clientList[key];
//         if (!fns) {
//             return false;
//         }
//         if (!fn) {
//             fns && (fns.length = 0);
//         } else {
//             for (var l = fns.length - 1; l >= 0; l--) {
//                 var _fn = fns[l];
//                 if (_fn === fn) {
//                     console.log(1)
//                     fns.splice(l, 1);
//                 }
//             }
//         }
//     };
//     return {
//         listen,
//         trigger,
//         remove
//     };
// })();
function a(price, price2) {
    console.log(`价格=${price}或${price2}`)
}
function b(price) {
    console.log(`价格=${price}`)
}

function c(price) {
    console.log("价格3=" + price)
}


// DEvent.listen('squareMeter38', a);
// DEvent.listen('squareMeter38', b);
// DEvent.listen('squareMeter38', c);

// // DEvent.remove("squareMeter38",b)
// DEvent.remove("squareMeter38", c)
// DEvent.trigger('squareMeter38', 20240000, 324);



let myEvent = (function () {
    let listen,
        trigger,
        remove,
        clientList = {};
    listen = function (key, fn) {
        if (!clientList[key]) {
            clientList[key] = [];
        }
        
        clientList[key].push(fn)

    };
    trigger = function () {
        let key = Array.prototype.shift.call(arguments);
        let fns = clientList[key];
        if (!fns || fns.length == 0) {
            return false;
        }
        for (let index = 0; index < fns.length; index++) {
            let fn = fns[index];
            fn.apply(this, arguments);
        }

    };
    remove = function (key, fn) {
        let fns = clientList[key];
        if (!fns) {
            return false;
        }
        if (!fn) {
            fns && (fns.length = 0);
        } else {
            for (let i = 0; i < fns.length; i++) {
                let _fn = fns[i];
                if (_fn === fn) {
                    fns.splice(i, 1)
                }
            }
        }


    }

    return {
        listen,
        remove,
        trigger,
    }
})()

function a(price,price2) {
    console.log(`价格0为${price}或${price2}`)
}
function b(price) {
    console.log(`价格1为${price}`)
}
function c(price) {
    console.log(`价格2为${price}`)
}
myEvent.listen("xxxx", a)
myEvent.listen("xxxx", b)
myEvent.listen("xxxx", c)
myEvent.remove("xxxx",a)
myEvent.trigger("xxxx", 123,1234)

myEvent.listen("xxx", a)
myEvent.trigger('xxx',12,124)
console 命令行工具 X clear

                    
>
console