私はOOPのjavascriptに関する本を読んでいて、例の1つに固執しています。プロトタイプの混乱:親プロトタイププロパティが子プロトタイプの影響を受ける
サンプルコードの最初のバージョンでは、Shape
コンストラクタ関数の新しいインスタンスが作成され、toString
メソッドが呼び出されます。 toString
メソッドは、 "形状"がShape
プロトタイプのname
プロパティであると想定されていてもTriangle
プロトタイプのname
プロパティである "Triangle"を返します。
サンプルコードの2番目のバージョンでは、toString
メソッドは意図したとおりに「図形」を返します。 プロトタイプのname
プロパティは、プロトタイプShape
のプロトタイプへの参照を保持するため、プロトタイプTriangle
プロトタイプはサンプルコードの両方のバージョンのように見えるため、コードの2番目のバージョンの変更がどのように変化したのか疑問に思っていますjsfiddle
第二版:なぜならTriangle.prototype.name = "Triangle";
最初のバージョンの "トライアングル" に更新する - 新しいF()は、第2の実施例でjsfiddle
Shape.prototypeとTriangle.prototypeがF()を参照している場合、TransitiveプロパティでShape.prototypeを参照していませんか? – user701510
新しいF()およびF.prototypeが異なる。 –