次のコードを検討してください。
function rectangle(x, y) {
this.width = x;
this.height = y;
this.calcArea = function() {
return (this.width * this.height);
};
}
オブジェクトには、2つのrectangle
プロパティ(幅と高さ)と1つのメソッド(calcArea)があります。
長方形オブジェクトに別のプロパティを追加したいと思います:area
。私は次のようにプロトタイプメソッドを介してこれを行います:
rectangle.prototype.area = function () {return this.calcArea();}
ここで、長方形の新しいインスタンスを作成するとします。var r = new rectangle(2,3);
残念ながら、area
これはメソッドです。正しい値を取得するには、を呼び出す必要がありますr.area();
area
(少なくとも)プロパティであり、メソッドではないはずなので、の結果calcArea()
をr.area
プロパティに直接割り当てる方法はありますか?
プロトタイプをこれに変更すると:
rectangle.prototype.area = function () {this.area = this.calcArea();}
一度電話をかける必要があります。そうすれば、r.area()
その後のすべての電話はr.area
必要に応じて番号になります。悪くはありませんが、完璧ではありません。それで、より良い方法はありますか?