以下内容之间有什么区别:
new require('events').EventEmitter();
和
var events = require('events');
new events.EventEmitter();
第一个不起作用,但第二个起作用。
为什么?
答案 0 :(得分:3)
注意这些行之间的区别:
new foo().bar()
......和......
new foo.bar()
在第一种情况下,new
运算符将更改foo()
函数的处理方式:它将用作构造函数(this
指向其原型副本等。)
但是在第二种情况下,new
运算符无法应用于foo
,因为后者未被调用:它的bar
属性被调用。当然,new
在这里意味着foo.bar
被用作构造函数。
这正是您的示例中发生的情况:第一种情况是尝试将new
应用于require
函数调用,而不是%require_result%.EventEmitter
。{/ p>