Javascript 在require中使用'new'和'()'
两者的区别是什么Javascript 在require中使用'new'和'()',javascript,node.js,javascript-events,event-handling,ecmascript-6,Javascript,Node.js,Javascript Events,Event Handling,Ecmascript 6,两者的区别是什么 var events = require('events'), emitter = new events.EventEmitter(); 及 或者EventEmitter在使用/不使用new和?时非常宽容,您的第二个示例根本不调用EventEmitter。发射器最终是对函数的引用,而不是通过调用它创建的对象 如果你想在这方面有所成就: vs 那么有两个区别: 您有一个引用事件模块的事件对象 调用EventEmitter时未使用new 如果生成的发射器相同,则为“是”
var events = require('events'),
emitter = new events.EventEmitter();
及
或者EventEmitter在使用/不使用new和?时非常宽容,您的第二个示例根本不调用EventEmitter。发射器最终是对函数的引用,而不是通过调用它创建的对象 如果你想在这方面有所成就: vs 那么有两个区别: 您有一个引用事件模块的事件对象 调用EventEmitter时未使用new 如果生成的发射器相同,则为“是”,这意味着EventEmitter故意将new设置为可选。我,所以我不知道我会依赖它 …或者EventEmitter在使用/不使用new and时非常宽容 最后一部分建议您使用第三种选择:
var emitter = new require('events').EventEmitter;
// `new` -----^ but no () --------------------^
拥有可选的EventEmitter功能,但没有EventEmitter功能;是JavaScript新操作符在做这件事:如果没有参数要传递给构造函数,则新表达式中的参数是可选的。new始终调用您赋予它的函数,无论是否存在。您的第二个示例根本不调用EventEmitter。发射器最终是对函数的引用,而不是通过调用它创建的对象 如果你想在这方面有所成就: vs 那么有两个区别: 您有一个引用事件模块的事件对象 调用EventEmitter时未使用new 如果生成的发射器相同,则为“是”,这意味着EventEmitter故意将new设置为可选。我,所以我不知道我会依赖它 …或者EventEmitter在使用/不使用new and时非常宽容 最后一部分建议您使用第三种选择:
var emitter = new require('events').EventEmitter;
// `new` -----^ but no () --------------------^
拥有可选的EventEmitter功能,但没有EventEmitter功能;是JavaScript新操作符在做这件事:如果没有参数要传递给构造函数,则新表达式中的参数是可选的。new总是调用您赋予它的函数,无论函数是否存在。您可以自己看到不同之处
var events = require('events'),
emitter = new events.EventEmitter();
console.log(typeof emitter);
// object
但是当你这样做的时候
var emitter = require('events').EventEmitter;
console.log(typeof emitter);
// function
在第一种情况下,您调用EventEmitter构造函数来获取对象,但在第二种情况下,您只是将emitter作为对EventEmitter函数本身的引用
就新部件而言,它对函数对象进行操作。由于没有要传递给EventEmitter的参数,因此括号是可选的。但在其他地方,你需要使用。。。执行该函数。您可以自己看到差异
var events = require('events'),
emitter = new events.EventEmitter();
console.log(typeof emitter);
// object
但是当你这样做的时候
var emitter = require('events').EventEmitter;
console.log(typeof emitter);
// function
在第一种情况下,您调用EventEmitter构造函数来获取对象,但在第二种情况下,您只是将emitter作为对EventEmitter函数本身的引用
就新部件而言,它对函数对象进行操作。由于没有要传递给EventEmitter的参数,因此括号是可选的。但在其他地方,你需要使用。。。执行该功能。相关:相关: