今回は「クラス」についてみていきます。
1 オブジェクト
オブジェクトにはさまざまなプロパティやメソッドを定義することができ、したがって単なる変数よりも、情報を整理して格納することができます。
しかし、次のような場合はどうでしょうか。
HTML(一部)
<script>
let tr1 = {
name : "三角形",
base : 6,
height : 8,
calcArea : function() {
return ( this.base * this.height ) / 2 ;
}
}
let tr2 = {
name : "さんかくけい",
base : 8,
height : 12,
calcArea : function() {
return ( this.base * this.height ) / 2 ;
}
}
let tr3 = {
name : "トライアングル",
base : 8,
height : 14,
calcArea : function() {
return ( this.base * this.height ) / 2 ;
}
}
let area1 = tr1.calcArea();
let area2 = tr2.calcArea();
let area3 = tr3.calcArea();
document.write("<p>" + tr1.name + "の面積は" + area1 + "です。</p>");
document.write("<p>" + tr2.name + "の面積は" + area2 + "です。</p>");
document.write("<p>" + tr3.name + "の面積は" + area3 + "です。</p>");
</script>
ブラウザ
この例では定義の時点で値を入力しています。(さらに行数が増えるのを避けるためです。)
このように3つのオブジェクトを定義してそれぞれ表示するだけでも、これだけの行数を要します。
これまで、変数や繰り返し処理など、できるだけ少ないコードで処理を行うことに努めてきましたが、このオブジェクトの定義についても何とかならないのでしょうか?
2 クラス
そこで「クラス」というものを利用します。
書式
class クラスの名前{
メソッドの名前(引数){
引数の処理
}
}
もちろん、メソッドの名前や引数は複数記述することができます。
なお、クラスは「オブジェクトを設計するもの」であるということができます。
HTML(一部)
<script>
class Tri{
constructor(name, base, height){ // ① コンストラクタ
this.name = name;
this.base = base;
this.height = height;
}
calcArea() { // ② メソッド
return ( this.base * this.height ) / 2 ;
}
}
tr1 = new Tri("三角形", 6, 8); // ③ インスタンスを生成
tr2 = new Tri("さんかくけい", 8, 12);
tr3 = new Tri("トライアングル", 8, 14);
let area1 = tr1.calcArea(); // ④ 計算結果を代入
let area2 = tr2.calcArea();
let area3 = tr3.calcArea();
document.write("<p>" + tr1.name + "の面積は" + area1 + "です。</p>");
document.write("<p>" + tr2.name + "の面積は" + area2 + "です。</p>");
document.write("<p>" + tr3.name + "の面積は" + area3 + "です。</p>");
</script>
ブラウザ
コードを少なくすることができました。
生成されたオブジェクトが3つなので大した効果がないかもしれませんが、これが何十、何百のオフジェクトを生成する場合には大きく違ってきます。
3 クラスの定義とインスタンスの生成
上から みていきます。
HTML(一部)
class Tri{
constructor(name, base, height){
this.name = name;
this.base = base;
this.height = height;
}
calcArea() {
return ( this.base * this.height ) / 2 ;
}
}
「おや?」と思われた方、その通りです。
オブジェクトではなく、constructor という特殊なメソッドで定義されていますね。
HTML(一部)
tr1 = new Tri("三角形", 6, 8);
そして、次の箇所では new クラス名 でオブジェクトを作っています。
この生成されたオブジェクトのことを インスタンス といいます。
HTML(一部)
constructor(name, base, height){
this.name = name; ①
this.base = base; ②
this.height = height; ③
}
・
・ ↑
・
tr1 = new Tri("三角形", 6, 8); ① ② ③
このインスタンスを生成する動きをわかりやすくすると上のようになります。
まず、インスタンスを生成するときに、constructor メソッドが呼び出され、引数として指定されている、① “三角形” が name に、② 6 が base に、そして、③ 8 が height にそれぞれ代入されます。
これが コンストラクタ の役割で、クラスからインスタンスを生成する際に呼び出されるメソッドです。
これらのプロパティを持つオブジェクトが tr1 となります。
メソッドについては前回説明したとおりの動きですね。
今回の例では、これが3回繰り返されます。
4 次回
さてだんだんと効率的になってきました。
次回は、さらにコードを少なくする工夫をしてみたいと思います。
カテゴリー
更新記事
- 「コンビニ」記事を読む6(モバイルオーダー、苦戦、からあげクン、デジタルサイネージ、回収、来店動機、抹茶アイス)
- 『日本経済新聞』を読む32(卵、リスキリング、目覚まし、消費税、個室、提供体制、消費二極化)
- 2026年5月15日(金)自転車で 観音寺市、三豊市
- 2026年5月14日(木)自転車で伊方町【四国最西端】
- 2026年5月13日(水)自転車で 土佐市、須崎市【横浪黒潮ライン】
- 2026年5月12日(火)自転車で 東みよし町、三好市
- 『読売新聞』(経済面)を読む1(レアアース、トラック、日本酒、ATM、軽、教養娯楽、保険)
- 2026年5月7日(木)自転車で 黒部市、入善町、朝日町、糸魚川市
- 「コンビニ」記事を読む5(試験販売、インド、災害支援、くすり、自動車、オーナー勉強会、小型店舗)
- 2026年5月5日(火・祝)自転車で 富山市、射水市、高岡市
- 「コンビニ」記事を読む4(パウダースペース、冷凍おにぎり、年齢確認、売れ残り商品、コンテスト)
- 2026年4月26日(日)自転車で 村上市
- 『日本経済新聞』を読む31(下落、同時安、海外旅行、AI銘柄、冷凍野菜)
- 商社株投資(およそ2年6か月)
- テーマ株投資(2年2か月)
- 2026年4月3日(金)自転車で 七尾市(能登島)
- 2026年3月1日(日)自転車で 富山市、滑川市、魚津市
- テーマ株投資(1年3か月)
- 『サピエンス全史』を読む
- テーマ株投資(1年2か月)
- 「コンビニ」記事を読む3(ジョブ型)
- 「コンビニ」記事を読む2(EC)
- 「コンビニ」記事を読む1(お手頃)
- 『日本経済新聞』を読む30(LiDAR、木造ビル、客室単価、オリーブ、オルカン)
- 『日本経済新聞』を読む29(フェノール、自動運転、合成燃料、上履き、予備費)
- テーマ株投資(12か月)
- 『ウォール街のランダム・ウォーカー<原著第13版>』を読む 第4部
- 『ウォール街のランダム・ウォーカー<原著第13版>』を読む 第3部
- 『ウォール街のランダム・ウォーカー<原著第13版>』を読む 第2部
- 『ウォール街のランダム・ウォーカー<原著第13版>』を読む 第1部
タグ
break (1) class (3) collection (6) continue (1) CSS (2) DOM (2) for (1) function (3) HTML (8) if (2) JavaScript (28) object (5) pop (1) push (1) shift (1) switch (1) unshift (1) VBA (1) while (2) ことば (36) アンガーマネジメント (1) インソース (1) ココナラ (16) コンビニ (3) コーチング (1) チーズ (2) ネズミ (2) ノート (2) パーソル (1) パーソルホールディングス (7) ブランディング (1) ブランド (1) プログリット (1) ポート (1) メモ (2) リスキリング (1) リンクアンドモチベーション (7) 三井物産 (1) 三菱商事 (1) 丸紅 (1) 人類史 (1) 伊藤忠商事 (1) 住友商事 (1) 分散投資 (4) 変数 (3) 学習 (1) 小人 (2) 怒り (1) 折り畳み自転車 (9) 新聞 (2) 株式 (33) 株式投資 (4) 歴史 (1) 用語 (27) 睡眠 (3) 給水器 (1) 記憶 (3) 長期投資 (4) Aoba-BBT (16) IGS (16) Kラーニング (1)