2

Node.jsのドキュメントでは、次のことがわかります。

var util = require("util");
var events = require("events");

function MyStream() {
    events.EventEmitter.call(this);
}

util.inherits(MyStream, events.EventEmitter);

var stream = new MyStream();

それはと同じですか:

function MyStream2() {
}
//MyStream2 = new events.EventEmitter; WRONG. Thank you @Esailija
MyStream2.prototype = new events.EventEmitter;

var stream2 = new MyStream2();

ありがとうございました :)

4

1 に答える 1

7

コードが機能するように編集すると、次のようになります。

MyStream2.prototype = new events.EventEmitter;

まだいくつかの違いがあります:

  • お使いのバージョンでMyStream2.prototype.constructor === events.EventEmitterは、、でinheritsMyStream2.prototype.constructor === MyStream2

  • お使いのバージョンはevents.EventEmitter、副作用を引き起こす可能性のあるコンストラクターを呼び出しますが、コンストラクター関数を呼び出さないinheritsusesを使用します。Object.create

  • チェーンプロトタイプ間の違いとは関係ありませんが、子コンストラクターが呼び出されたときに、バージョンは親コンストラクターを呼び出しません。function MyStream2() { events.EventEmitter.call(this); }したがって、子コンストラクターが呼び出されたときに、初期状態を適切に確立する必要があります。

于 2012-12-02T20:16:51.673 に答える