(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 是不是這麼實現的。