1

カスタムイベントを別のオブジェクトに挿入できるように、カスタムイベントオブジェクトを作成しています。これまでのところ(簡略化)、

function Game() {

     new Events(["pause", "resume"], this);
};

function Events(events, obj) {

     // Event object for object
    obj.events = {};

    // For each event
    events.forEach(function(event) {

        // Attach event array to store callbacks
        this.events[event] = [];

    }, obj);

     // Fire event
     obj.fire = function(event) {

         ////////////
     };

     // Add event
     obj.on = function(event, callback) {

         ////////////
     };
};

私の質問は、これはこれを行う正しい方法ですか? fromを呼び出しEventて fromGameに追加しGameても問題ありEventsませんか? なんらかの理由で間違っているように思えますが、その理由はわかりませんか?

私が知らないこのコードを構造化する方法はありますか?

(イベントがあり、の拡張ではないという唯一の理由で、のプロトタイプに追加Eventsしたくありません)GameGameEvents

私の質問を読んでくれてありがとう。

4

1 に答える 1

2

私の質問は、これはこれを行う正しい方法ですか? Event を Game から呼び出して、Event から Game に追加することは問題ないと考えられますか?

はい、全然大丈夫です。これはデコレータパターンと呼ばれます。それが間違っているとあなたが感じた理由がわかりません。

私が知らないこのコードを構造化する方法はありますか?

使用しないでくださいnewEventsコンストラクタではありません。より適切でわかりやすい署名は、

function makeEventEmitter(obj, events) {
于 2013-05-06T16:50:35.410 に答える