私はOOPjavascriptに関する本を読んでいて、例の1つで立ち往生しています。
サンプルコードの最初のバージョンでは、Shapeコンストラクター関数の新しいインスタンスが作成され、toStringメソッドが呼び出されます。このメソッドは、「Shape」がプロトタイプのプロパティであると想定されている場合でも、プロトタイプのプロパティでtoStringある「Triangle」を返します。nameTrianglenameShape
サンプルコードの2番目のバージョンでは、toStringメソッドは意図したとおりに「Shape」を返します。Triangleサンプルコードの両方のバージョンで、プロトタイプはプロトタイプへの参照を保持しているため、ShapeプロトタイプのnameプロパティShapeは引き続き「Triangle」に更新されるため、コードの2番目のバージョンでの変更がどのように違いを生んだのか疑問に思います。" のためTriangle.prototype.name = "Triangle";
最初のバージョン:jsfiddle
2番目のバージョン:jsfiddle