gpt4 book ai didi

javascript - Nodejs 事件 - EventEmitter - 理解类实例

转载 作者:太空宇宙 更新时间:2023-11-04 00:38:17 25 4
gpt4 key购买 nike

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

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

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

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

我的看法:

在 1 中,(require('events')) 应返回 events 模块的导出。然后 .EventEmitter() 引用该类并 new 创建 EventEmitter 的新实例。

在2中,(require('events').EventEmitter)应该返回导出的EventEmitter类。然后new...()创建一个EventEmitter`的新实例。

最佳答案

这没什么不寻常的。您可以在函数周围放置任意多个括号,然后在其后面添加 () ,这样它就会正常工作。

类似于

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

等等...这同样适用于对象/函数。

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)();

会抛出错误。

关于javascript - Nodejs 事件 - EventEmitter - 理解类实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37974985/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com