#57 JavaScriptの学習 コンストラクタの引数の利用

プログラミング プログラミング

JavaScriptのクラスについて、クラスの定義・インスタンスの生成・コンストラクタの活用をしていく上で「引数」を利用することを学びましょう。初心者にやさしい解説を行います。

コンストラクタとプロパティ

コンストラクタ内にプロパティを設定できますが、固定の値であれば使い勝手がよくないことがありますよね。例えば、「Food」クラスにインスタンスを生成する際にインスタンスの「名前」を固定して決めてしまうプロパティにすると、クラスが意味をなさなくなります。

例えばこのような記述です。

  1. class Food {
  2.     constructor() {
  3.         this.name = 'ハンバーグ';
  4.     }
  5. }
  6. // インスタンスを生成する
  7. const meat = new Food();
  8. // プロパティ値を取り出す
  9. console.log(meat.name);
  10. // →ハンバーグ

Foodのクラスにmeatというインスタンスを生成しました。このインスタンスはプロパティ値のハンバーグということで生成したのであれば問題ないですが、これから生成するすべてのインスタンスに「ハンバーグ」という値が備わるということです。この値と関係ないインスタンスを生成することもあるでしょう。クラス内のプロパティはすべてのインスタンスに共通して取りうる値にするのが理想です。しかしそれも難しいですね。それを解決するのが「引数」というルールです。

コンストラクタの引数

要するに、プロパティの値が変数であればいいのです。コンストラクタに「引数」を与えて、プロパティの値がインスタンスを生成するたびに変われば問題ありませんね。

例えばこのような記述です。

  1. class Food {
  2.     constructor(name_value, special) { //引数「name_value」と「special」が
  3.         this.name = name_value; //←「name」「point」プロパティの値に代入される
  4.         this.point = special;
  5.     }
  6. }
  7. const meat = new Food('ハンバーグ', 'チーズ') //←引数「ハンバーグとチーズ」が↑コンストラクタの「name_valueとspecial」に代入される
  8. const result = 'この' + meat.name + 'は' + meat.point + 'が特徴です';
  9. console.log(result);
  10. //→このハンバーグはチーズが特徴です

このようにインスタンスを生成する際に引数を与えて、その引数によってプロパティの値を変えることが出来るので、問題が解消されたはずです。引数をきちんと使うことが大事なのです。

関連記事
JavaScriptーコンストラクタを設定してみよう
JavaScriptーインスタンスのプロパティを設定してみよう

コメント