1

次の例の結果のオブジェクトの違いは何ですか:

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

var oProto  = Object.create(EventEmitter.prototype);
var oProto2 = Object.create(oProto);

var oConstr  = Object.create(new EventEmitter);
var oConstr2 = Object.create(oConstr);

oConstrコンストラクターにoConstr2プロパティが設定されていると思いますEventEmitterが、他に意味のある違いはありますか?

4

1 に答える 1

5

あなたのコードは誤解を招くものです。oConstrコンストラクター関数ではない場合にこの用語を使用します。

oProto -> EventEmitter.prototype -> Object.prototype -> null
oProto2 -> oProto -> EventEmitter.prototype -> Object.prototype -> null

var temp = new EventEmitter;

oConstr -> temp -> EventEmitter.prototype -> Object.prototype -> null
oConstr2 -> oConstr -> etc

唯一の違いは、それtempを継承するオブジェクトだけでなく、EventEmitterへの呼び出しから拡張された独自のプロパティも持っていることEventEmitter.constructor.call(temp)です。

EventEmitter.prototype個人的には、使用して無視することをお勧めしますnew EventEmitter

EventEmitter個人的には から継承したことはありません

于 2011-11-29T02:24:50.033 に答える