我正在尝试让我的Node.js对象“投射事件”。 如果我制作“静态”对象并实例化它们,这不是问题,但是当我的对象没有静态祖先时,例如使用“对象字面量”符号创建对象时,我该怎么办?
我习惯编写ExtJS语法,因此更喜欢一切都在对象字面量中。
或者将我的函数/原型添加到已构建的内容中,例如:
我习惯编写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格式的对象。