読者です 読者をやめる 読者になる 読者になる

順次、選択、そして繰り返し

プログラミングのことやITのこと、たまに演劇のことも書きます。

JavaScriptのObjectクラスについて(プロトタイプ)

JavaScriptのObjectクラスで特にプロトタイプについて
分からなかったので、少しだけ調べてみた。

まず、理解するためにソースコードを書いてみる。

「プロトタイプとは実体化済みのオブジェクトのことをいう。」らしい……。

Javaはクラスベースの言語なのでその反対だと思えばいいのかな。
確かにJavaはクラスという未実装なものを基礎にして実体化するし。

JavaScriptでは関数が作成された時点でプロトタイプが作成される。
なので、ソースコード10行目の

hoge.prototype.num1 = 10;

は、hogeという関数(オブジェクト)の中にあるプロトタイプにnum1という
プロパティを設定して10を代入してることになる。

そして、16行目から22行目の

  //obj1にnum1を定義する
  obj1.num1 = 100;
  
  //定義したnum1の値が表示される
  console.log("obj1:" + obj1.num1);
  //プロトタイプで宣言された値が表示される
  console.log("obj2:" + obj2.num1);

で、暗黙の参照が行われている。

暗黙の参照とは、そのオブジェクト自身に指定したプロパティがない場合
生成元のオブジェクトにプロパティがないか参照を行うこと。

なので、obj1.num1ではオブジェクト自身にnum1というプロパティ(17行目で設定)が
存在するので100を出力する。
しかし、obj2にはnum1というプロパティを設定していないので
10行目で設定したプロトタイプ内のnum1を出力する。


少し調べたけど、これはもっと調べる必要があるな……。

参考サイト