jQuery EventEmitter 简介

jQuery EventEmitter 是一个简易的 Observer 模式实现,短短的几行程式码就实作出对物件加入自订事件的机制。
事实上 jQuery EventEmitter 只是把 jQuery 内建的 event 机制再加上一层包装而已,实现方式如下:

(function(jQuery) {   jQuery.eventEmitter = {    _JQInit: function() {      this._JQ = jQuery(this);    },    emit: function(evt, data) {      !this._JQ && this._JQInit();      this._JQ.trigger(evt, data);    },    once: function(evt, handler) {      !this._JQ && this._JQInit();      this._JQ.one(evt, handler);    },    on: function(evt, handler) {      !this._JQ && this._JQInit();      this._JQ.bind(evt, handler);    },    off: function(evt, handler) {      !this._JQ && this._JQInit();      this._JQ.unbind(evt, handler);    }  }; }(jQuery));

因为 jQuery 也可以包装一个非 DOM 的纯物件,所以程式中透过 _JQInit 动态生成一个以 jQuery 包装起来的 _JQ 物件。

然后在 _JQ 物件上,把 emit/once/on/off 等方法 delegate 到 jQuery 原来的 trigger/one/bind/unbind 方法上,就完成了整个机制。

然后我们就可以这样用了 (範例直接引用原文) :

function App() {  // do stuff} jQuery.extend(App.prototype, jQuery.eventEmitter); var myApp = new App(); // myApp supports events! myApp.on('someEvent', function() {  alert('someEvent!');});myApp.emit('someEvent'); // 'someEvent' alerted

主要的用法是先让物件继承 jQuery.eventEmitter ,这样一来就可以在我们自行建立的物件上使用事件机制了。


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章