Javascript 一个对象没有';t侦听在另一个对象上发出的事件
尝试使对象发出和接收事件:Javascript 一个对象没有';t侦听在另一个对象上发出的事件,javascript,node.js,events,javascript-events,event-handling,Javascript,Node.js,Events,Javascript Events,Event Handling,尝试使对象发出和接收事件: var events = require('events'), util = require('util'); function Obj(){ events.EventEmitter.call( this ); // what does this line? } util.inherits( Obj, events.EventEmitter ); var o = new Obj(), a = new Obj(); a.on('some'
var events = require('events'),
util = require('util');
function Obj(){
events.EventEmitter.call( this ); // what does this line?
}
util.inherits( Obj, events.EventEmitter );
var o = new Obj(),
a = new Obj();
a.on('some', function () {
console.log('a => some-thing happened');
});
o.on('some', function () {
console.log('o => some-thing happened');
});
o.emit('some');
- 有一个响应
仅仅来自同一个对象,而不是另一个对象。为什么?如何让他们都能听到一些事件o=>一些事情发生了
- 调用(this)events.EventEmitter.What
events代码>行吗?这对结果没有任何影响。取自
inherits()
所做的唯一事情就是将子类的原型设置为父类的原型。子类不会神奇地链接在一起events.EventEmitter.call(this)代码>执行父级的构造函数,以允许它自己执行一些初始化(例如,设置存储事件和其他属性的事件处理程序的事件侦听器对象)。然后在events.EventEmitter.call之后(this)代码>你可以在上面为你的子类执行你自己的初始化。这通常包括特定于实例的属性(例如,This.id=Math.random()*1000
)
o=>一些事情发生了
仅仅来自同一个对象,而不是另一个对象。为什么?
因为它们是不同的发射器对象。每个发射器只通知它自己的侦听器;这是一种观察者模式,而不是调停者模式
如何让他们都能听到一些事件
仅使用单个EventEmitter
实例。您甚至可能不需要这个Obj
子类,只需执行a=o=neweventemitter()
调用(this)events.EventEmitter.Whatevents代码>行吗?这对结果没有任何影响
看如果你想问两个独立的问题,我可以结束第二个问题,因为……是的,找到了这个问题。yesObserver意味着你正在监听一个特定的可观测对象——你有两个,其中只有一个在发射事件。Mediator意味着您有一个全局对象,其他所有人都在该对象上侦听和/或触发事件。