jQuery と JavaScript の実務経験はありますが、プロトタイプの継承を理解するのはまだ難しいと感じています。そのため、Stoyan Stefanov の「Object Oriented JavaScript」という本を読み始めました。ただし、本から次の演習を解決しているときに問題に遭遇しました。
- プロパティとメソッド
shape
を持つ というオブジェクトを作成します。type
getType
Triangle
プロトタイプが shape であるコンストラクター関数を定義します。で作成されたオブジェクトには、三角形の辺を表すと のTriangle
3 つの独自のプロパティが必要a
です。b
c
- という名前のプロトタイプに新しいメソッドを追加し
getPerimeter
ます。
次のコードで実装をテストします。
var t = new Triangle(1, 2, 3);
t.constructor; // Triangle(a, b, c)
shape.isPrototypeOf(t); // true
t.getPerimeter(); // 6
t.getType(); // "triangle"
次のコードでこの問題を解決しようとしました。
shape = {
type : "",
getType: function(){
return this.type;
}
};
function Triangle(a, b, c) {
}
Triangle.prototype = shape;
ただし、期待どおりに機能していないようです。この問題をどのように解決しますか?詳しく説明してください。プロトタイプの継承を本当に理解したいです。