/** * {注入的js} * @author yutent * @date 2023/07/21 17:38:11 */ class EventEmitter { // __events__ = Object.create(null) $on(name, fn) { if (this.__events__[name]) { this.__events__[name].push(fn) } else { this.__events__[name] = [fn] } } $once(name, fn) { fn.__once__ = true this.$on(name, fn) } $off(name, fn) { if (this.__events__[name]) { if (fn) { this.__events__[name] = this.__events__[name].filter(it => it !== fn) } else { this.__events__[name] = [] } } } $emit(name, ...args) { if (this.__events__[name]) { for (let fn of this.__events__[name]) { try { fn.apply(this, args) if (fn.__once__) { this.$off(name, fn) } } catch (e) { console.error(e) } } } } $destroy() { this.__events__ = Object.create(null) } } window.native = new EventEmitter()