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