天天看點

Node.js自定義對象事件監聽與發射

一、node.js是以事件驅動的,那我們自定義的一些js對象就需要能監聽事件以及發射事件。在node.js中事件使用一個eventemitter對象發出,該對象在events子產品中。它應該是使用觀察者設計模式來實作把事件監聽器添加到對象以及移除,之前寫oc那塊的時候也有些觀察者設計模式,在oc中也經常用到:通知中心、kvo,也很容易了解.

.addlistener(eventname,callback):将回調函數附加到對象的監聽器中。當eventname的事件被觸發時,回調函數被放置在事件隊列中執行。

.on(eventname,callback):和.addlistener一樣。

.once(eventname,callback),也是監聽不過隻在第一次被觸發。

.listeners(eventname):傳回一個連接配接到eventname事件的監聽器函數數組。

.setmaxlisteners(n):如果多于n的監聽器加入到eventrmitter對象,就會出發警報.

.removelistener(eventname,callback):将callback函數從eventemitter對象的eventname事件中移除。

二、上面寫了那麼多也都是eventemitter對象方法的使用,自定義的對象怎麼能使用它們才是關鍵!

監聽方法都是在eventemitter對象,要想讓自定義的對象也能使用這些方法,那就需要繼承eventemitter。

js中實作繼承有好幾種方法:構造函數、原型鍊、call、apply等,可以百度一下:js繼承。關于原型對象原型鍊這個寫的挺不錯:http://www.cnblogs.com/shuiyi/p/5305435.html

隻需将events.eventemitter.prototype添加到對象原型中.(在eventemitter中是通過prototype來添加的監聽器方法)

三、使用

繼續閱讀