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');