没有在node.js中发出的方法

时间:2015-08-04 10:26:27

标签: node.js eventemitter

我做了一个简单的例子如下,我得到一个错误,说'没有'发出'的方法',问题是什么?

var events = require('events');
var EventEmitter = require('events').EventEmitter;
var util = require('util');

var Door = function (options) {
    events.EventEmitter.call(this);
}   

util.inherits(Door, EventEmitter);


Door.prototype = {
    open:function(){
       this.emit('open');
    }
}

var frontDoor = new Door('brown');

frontDoor.on('open', function() {
    console.log('ring ring ring');
  });
frontDoor.open();

1 个答案:

答案 0 :(得分:1)

您正在使用新对象替换Door的原型,该对象也会覆盖(/删除)EventEmitter原型方法:

Door.prototype = {
    open:function(){
       this.emit('open');
    }
}

相反,只需在现有原型中添加一个条目:

Door.prototype.open = function() {
  this.emit('open');
};