prototype の利用 - オブジェクトのプロトタイプオブジェクトの参照 - JavaScript

JavaScriptでprototype を利用して、オブジェクトのプロトタイプオブジェクトを利用するコードを紹介します。

概要

JavaScriptの関数には、prototype の名称のオブジェクトがあります。prototype はオブジェクトであり、値や関数を追加できます。また、元のオブジェクトをインスタンス化した場合でもprototypeの実装はインスタンスに引き継がれます。

コード例

コード

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8" />
  <title></title>
  <script type="text/javascript">
    var MyObj = function (value1, value2) {
      this.val1 = value1;
      this.val2 = value2;
    }

    MyObj.prototype.proc1 = function () {
      return this.val1 + this.val2
    }

    function onButtonClick() {
      var mobj = new MyObj(4, 7);
      var elem = document.getElementById("output");
      elem.innerHTML = mobj.proc1();     
    }

  </script>
</head>
<body>
  <div id="output">output</div>
  <hr/>
  <input type="button" value="Exec" onclick="onButtonClick();"/>
</body>
</html>

解説

    var MyObj = function (value1, value2) {
      this.val1 = value1;
      this.val2 = value2;
    }
上記コードでオブジェクトを定義します。

  MyObj.prototype.proc1 = function () {
    return this.val1 + this.val2
  }
上記コードにより、MyObjに proc1 関数を実装できます。

  function onButtonClick() {
    var mobj = new MyObj(4, 7);
    var elem = document.getElementById("output");
    elem.innerHTML = mobj.proc1();     
  }
MyObjのインスタンス mobjを作成します。idが"output"である要素を選択しelemに代入します。elemの内部HTMLに mobjのproc1()関数(メソッド)を呼び出します。prototype に proc1 を実装したことで、MyObjにproc1 が実装されたことになり、MyObj インスタンスの mobj.proc1()により、MyObj.prototype.proc1 に実装したコードが呼び出されます。

今回のコード例では、MyObjのインスタンス作成時に引数に4と7を与えており、proc1 関数の戻り値はMyObjインスタンス作成時の引数の合計値とを返しますので、mobjのproc1 呼び出しにより、4+7 で 11 が戻り値として戻り、画面に表示される動作となります。

実行結果

上記のHTMLファイルをWebブラウザで開きます。下図の画面が表示されます。


"output"が表示されていたエリアに、"11"が表示されます。MyObjインスタンスのmobjに対して proc1 関数(メソッド)が呼び出されていることが確認できます。


著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
掲載日: 2017-08-18
iPentec all rights reserverd.