Я пытаюсь передать события объекта Node.js. Теперь это не проблема, если я создаю «статические» объекты и создаю их экземпляры, но как мне это сделать, если у моего объекта нет статического дедушки, например, когда объект был создан с использованием нотации литерала объекта?
Я привык писать синтаксис 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- подобных объектах с пометкой.