EventEmitter创建

时间:2013-03-25 12:17:48

标签: node.js

以下内容之间有什么区别:

new require('events').EventEmitter();

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

第一个不起作用,但第二个起作用。

为什么?

1 个答案:

答案 0 :(得分:3)

注意这些行之间的区别:

new foo().bar()

......和......

new foo.bar()

在第一种情况下,new运算符将更改foo()函数的处理方式:它将用作构造函数(this指向其原型副本等。)

但是在第二种情况下,new运算符无法应用于foo,因为后者未被调用:它的bar属性被调用。当然,new在这里意味着foo.bar被用作构造函数。

这正是您的示例中发生的情况:第一种情况是尝试将new应用于require函数调用,而不是%require_result%.EventEmitter。{/ p>