下記のソースについての質問です。
javascript
1function Myclass() { 2 this.x = "ああああ"; 3} 4 5var obj = new Myclass(); 6console.log(obj.x);//ああああ 7 8console.log(obj.z);//undefined 9 10Myclass.prototype.z = "いいいい"; 11console.log(obj.z);//いいいい
Myclass.prototypeを探してもインスタンス(obj)が読み込んだプロパティが見つからない場合、Myclass.prototypeを生成したコンストラクタのprototypeオブジェクト(__proto__
)のプロパティを探します。
この「Myclass.prototypeを生成したコンストラクタ」というのは、function Myclassです。function Myclassが生成されることでMyclass.prototypeが自動で生成されると認識しておるので、
そう考えました。しかし、パーフェクトjavascript(142p)という書籍では、Myclass.prototypeオブジェクトのコンストラクタは、デフォルトだとObjectオブジェクトであると、書いてありました。つまり、Myclass.prototypeのコンストラクタは、MyclassではなくObjectということだと解釈しました。
ここで疑問ですが、
「Myclass.prototypeを生成したコンストラクタ、つまりfunction Myclass」と、書籍に記述されていた「Myclass.prototypeオブジェクトのコンストラクタは、デフォルトだとObjectオブジェクト」には、どのような違いがあるのでしょうか。単語としてのObjectオブジェクトは、あらゆるオブジェクトが継承しているオブジェクトでFunctionクラスから生まれたもの、Myclassがユーザ定義関数で、Functionクラスが実体化(インスタンス化)したものあると認識しております。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/06/20 08:42
2016/06/22 08:29 編集
2016/06/22 10:44