Nicholas C. Zakas(Wrox、2012、p.210-215)の次の機能を使用したWeb寄稿者のためのプロフェッショナルJavaScript:Web開発者のためのプロフェッショナルJavaScriptの
"寄生虫の組み合わせ継承"function inheritPrototype(subType, superType) {
var prototype = object(superType.prototype);
prototype.constructor = subType;
subType.prototype = prototype;
}
私は何かが欠けていない限り、私は例のコードを使用して取得する出力が同じであるprototype.constructorへのサブタイプの割り当てがないか、行うことになっているかを把握するためには至っていない。
。 inheritPrototypeで "augment object"(prototype.constructor = subType;)を使用しない場合: 0123これは本当に無目的のコードの行を指定できinheritPrototype http://jsfiddle.net/eAYN8/
に;(prototype.constructor =サブタイプ) "オブジェクトを拡張する" と
?説明ありがとうございます!
をコンストラクタのプロトタイプを上書きする何らかの理由がありますgoog.inheritsにこのパターンを好む? http://docs.closure-library.googlecode.com/git/closure_goog_base.js.source.html#line1466私は親メソッドをオーバーライドして子からそれを呼び出すことができるように、子の 'superClass_'をどのように設定するのが好きです。 – HMR
@HMR:異なる継承パターンは、異なるフィーチャ(複数の継承、プライベート変数や保護された変数、スーパーなどを扱うことができる場合は、「通常の」クラスとやりとりする方法)によってうまく機能する傾向があります。個人的には、私はより機能的なスタイルでプログラムする傾向があるので、実際には多くのクラスを使用しないでください。階層を使用すると、通常は非常にフラットなので、スーパークラスと継承のものはあまり問題になりません。 – hugomg
コンストラクターへの代入が必須ではなく、サブタイプ(または子)インスタンスコンストラクター=== SuperTypeがなく、それをSubTypeにリセットすると、その情報が後で利用可能になるという点でmissingnoとGiviの両方が正しいです。おそらくそれがそこにあるのです。ありがとう! –