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