Node.jsオブジェクトに events をキャストさせようとしています。「静的」オブジェクトを作成してインスタンス化する場合、これは問題ではありませんが、オブジェクトがオブジェクト リテラル表記を使用して作成されたときのように、オブジェクトに静的おじいちゃんがいない場合はどうすればよいでしょうか?
私は ExtJS 構文を書くのに慣れているので、すべてオブジェクト リテラルを好みます。
// var EventEmitter = require('events').EventEmitter; // How where when?
myObject = {
myFunction: function() {
console.log('foo');
},
urFunction: function() {
console.log('bar');
}
};
これはオブジェクトです。インスタンスを増やす必要がないため、コンストラクターはありません。
myObject
どうすればイベントの発行を許可できますか?
私はコードを適応させようと試みましたが、次のようなコンストラクターを使用してオブジェクトをフォームに書き換えずに動作させることはできません。
var EventEmitter = require('events').EventEmitter;
var util = require('util');
function myClass() {
EventEmitter.call(this);
myFunction: function() {
this.emit('foo');
},
urFunction: function() {
this.emit('bar');
}
};
myClass.prototype = Object.create(EventEmitter.prototype);
// or // util.inherits(myClass, EventEmitter);
var myObject = new myClass; // Shouldn't be necessary for my single-instance case
または、次のように構築されたものに関数/プロトタイプを追加します。
var EventEmitter = require('events').EventEmitter;
var util = require('util');
var myObject = new EventEmitter();
// or // var myObject = Object.create(new EventEmitter); // Dunno difference
myObject.myFunction = function() {
this.emit('foo');
},
myObject.urFunction = function() {
this.emit('bar');
}
};
util.inherits(myObject, EventEmitter);
myObject
オブジェクトのリテラル表記を維持しながら、イベントを発行できるようにするにはどうすればよいですか? それを行うには非常に多くの紛らわしい方法がありますが、それらの JSONのような表記されたオブジェクト内の 1 つではありません。