3

amdefine モジュール (Revealing Module Pattern) で node events.EventEmitter を使用しようとしています。「on」関数を実装し、これを EventEmitter に渡す作業コードがあります。

if (typeof define !== 'function') {
    var define = require('amdefine')(module);
}

define(function (require) {

    var events = require('events');
    var emitter = new events.EventEmitter();

    function doSomething(strParam) {
        console.log('doSomething: ' + strParam);
        emitter.emit('done');
    }

    return {
        do: function(strParam) {
            doSomething(strParam);
        },
        on: function(event, callback) {
            emitter.addListener(event, callback);
        }
    }
});

これは仕事をします。ただし、代わりに継承を行う方がよいように思われるため、すべての EventEmitter プロパティを利用できます。

[mycode].prototype.__proto__ = events.EventEmitter.prototype;

しかし、上記の RMP パターンでこれを行う方法がわかりません。誰か提案はありますか?

4

1 に答える 1