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を出力する。
少し調べたけど、これはもっと調べる必要があるな……。
参考サイト