阅读layim代码小记,监听事件实现方法
(function (win) { //注册事件 var chat = function () { $('#open').on('click', function () { sendMessage(); }) } var call = {}; //监听事件 chat.prototype.on = function (events, callback) { if (typeof callback === 'function') { call[events] ? call[events].push(callback) : call[events] = [callback]; console.log(call); } return this; } //内部事件 var sendMessage = function () { console.log('dosomething'); var data = { d: 'somedata' }; //这里需要循环,如果外边没有执行 on 监听,这里会报错 call.sendMessage[0](data); } win.chat = new chat(); })(window); //外部监听sendMessage方法 chat.on('sendMessage', function (msg) { console.log(msg); console.log('监听到sendMessage方法'); });
以前经常用定义callback方法实现对事件调用成功之后的处理,这种 on方法很像 document.on 虽然,我不知道document.on 是不是这么实现的。
多学点,总不会吃亏的。