nodejs事件 – EventEmitter – 理解类实例

我正在实例化一个事件发射器,并注意到这两行似乎工作正常。

任何人都可以澄清这两种方法之间的权衡或差异导入和实例化EventEmitter类?

1: var eventEmitter = new (require('events')).EventEmitter();

2: var eventEmitter = new (require('events').EventEmitter)();

我的拿:

在1中, (require('events'))应该返回events模块的输出。 然后.EventEmitter()引用那个类和new创build一个EventEmitter的新实例。

2, (require('events').EventEmitter) should return the exported EventEmitter class. Then (require('events').EventEmitter) should return the exported EventEmitter class. Then new …() creates a new instance of EventEmitter creates a new instance of

这没什么不寻常的。 你可以在函数中放置尽可能多的圆括号,然后()后面的圆括号就可以工作。

这与…类似

 (1 + 2) === 3; ((1) + 2) === 3; ((1 + (2))) === (3); 

等等…这同样适用于对象/function。

 class MyClass { /* ... */ } const object = { c: MyClass, }; let a = new object.c(); console.log(a === new (object).c()); console.log(a === new ((object.c))()); console.log(a === new ((object).c)()); 

等等…

值得注意的是,你不能在点后加上括号. ,例如:

 let a = new object.(c)(); 

会抛出一个错误。