次の違いは何ですか:
new require('events').EventEmitter();
と
var events = require('events');
new events.EventEmitter();
最初のものは機能していませんが、2番目のものは機能しています。
なんで?
次の違いは何ですか:
new require('events').EventEmitter();
と
var events = require('events');
new events.EventEmitter();
最初のものは機能していませんが、2番目のものは機能しています。
なんで?
これらの行の違いに注意してください。
new foo().bar()
... と ...
new foo.bar()
最初のケースでは、new
演算子はfoo()
関数の処理方法を変更します。コンストラクターとして使用されます(this
プロトタイプのコピーなどを指します)。
ただし、後者の場合、後者は呼び出されないnew
ため、演算子をに適用することはできません。代わりに呼び出されるのはそのプロパティです。当然、ここでは、代わりにコンストラクターとして使用されることを意味します。foo
bar
new
foo.bar
そして、それはまさにあなたの例で起こることです:最初のケースは、 1つではなく関数呼び出しに適用しよnew
うとします。require
%require_result%.EventEmitter