先日 セクション 21-5 に正解できましたので、復習を兼ねて まとめを書いておきます。
問題
Circle オブジェクトが定義されています。 これに、円周を求める circumference( ) と、面積をを求める area( ) メソッドを定義して、正しく出力させましょう。
function Circle(radius) {
this.radius = radius;
this.PI = 3.14;
}
//ここにメソッドcircumference()とarea()を定義する。
Circle.prototype.circumference = function(){
return this.radius * 2 * this.PI;
};
Circle.prototype.area = function(){
return this.radius * this.radius * this.PI;
};
var circle1 = new Circle(3);
var circle2 = new Circle(25);
output("半径"+ circle1.radius + "の円の円周は" + circle1.circumference() + "で、面積は"+ circle1.area() + "です。");
まず 円周を求める公式は、直径 × 3.14 で、円の面積を求める公式は、半径 × 半径 × 3.14 でした。
この式をメソッドにして、クラス Circle の prototype に続けて書けばうまく行きそうです。
1~4行目 クラス Circle が定義されています。引数で radius を受け取って Circle.radius に代入していますが、問題文には書かれていませんが、radius は英語で半径という意味なので、おそらく半径を扱っているのでしょう。ということは、14~15行目の (3) と (25) の引数は、半径の数値なのでしょう。
PI = 3.14 は Circle のプロパティにしてしまっていいと思うので、3行目に書いておきました。ここまでで、計算に必要な プロパティ は揃いました。
自分が 答えとして 書くのは 7~12行目までです。
7~9行目 円周を計算する メソッドです。8行目 this.radius には、1~2行目で 引数として受け取った、半径が代入されていますので、これを 2倍すれば 直径になります。さらに 3.14 を掛ければ、円周になります。この処理を 7行目で 無名関数の書き方で、クラス Circle の prototype.circumference に代入すれば メソッドの完成です。
10~12行目 こちらもやっていることは 7~9行目と同じです。メソッドの中身が 半径 × 半径 × 3.14 になっています。
ひとまず prototype の問題は解き終わりました。参考書などを見ると、さらに prototype を使った継承という技法があるみたいなのですが、これは かなり難しくて、今の所 さっぱり判っていません。この辺の事が判ったら、また 別の記事にまとめたいと思います。
0 件のコメント:
コメントを投稿