javascript - 将 `new` 和 `()` 与 require 一起使用

标签 javascript node.js ecmascript-6 event-handling dom-events

有什么区别:

var events  = require('events'),
    emitter = new events.EventEmitter();

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

EventEmitter 在使用/不使用 new() 方面相当宽容?

最佳答案

您的第二个示例根本没有调用 EventEmitteremitter 最终成为对该函数的引用,而不是通过调用它创建的对象。

如果您打算在上面添加 ():

var events  = require('events'),
    emitter = new events.EventEmitter();

对比

var emitter = require('events').EventEmitter();
// Note ------------------------------------^^

那么有两个区别:

  1. 您有一个引用事件模块的 events 对象。

  2. 您在调用 EventEmitter 时没有使用 new

如果生成的 emitter 是相同的,那么是的,这意味着 EventEmitter 有意使 new 可选。我 don't see that in the docs ,所以我不知道我会依赖它。


...or EventEmitter is pretty forgiving in using/not using new and ()?

最后一部分表明您使用了第三种选择:

var emitter = new require('events').EventEmitter;
// `new` -----^   but no () --------------------^

() 是可选的,EventEmitter 不会做任何事情;是 JavaScript new 运算符在做这件事:如果您没有要传递给构造函数的参数,则 ()new 中是可选的表达。 new 总是 调用您给它的函数,无论是否有 ()

关于javascript - 将 `new` 和 `()` 与 require 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26156536/

相关文章:

node.js - 类型错误 : Cannot read property 'onReady' of undefined

javascript - 如何在单个页面上创建滚动到顶部按钮?

javascript - 处理提交事件 - jquery

node.js - node.js 中的同步生成

javascript - 使用 ES6 检查 NodeList 中的任何元素是否具有特定类

javascript - 未启用 ES7 属性初始值设定项的柯里化(Currying)函数

javascript - 未转义和或未知实体 "&&"javascript

javascript - 如何在 AngularJS View 中检查空对象

当它是一个对象时,具有转义字符问题的 Javascript 会变成两次

node.js - Nodejs错误: spawn ENOENT