我正在尝试让我的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 的标记对象中却没有一种。