質問: { m2: function() { return this; } }; ``` --- ・Function オブジェクトではないから? ``` hoge.m2(); //Uncaught TypeError: hoge.m2 is not a function(...) ``` --- ・prototypeは予約語ではない(?)ので,普通のプロパティとして使用可能、ということでしょうか? ``` hoge.prototype.m2(); //Object {} ```
回答: prototypeについて誤解があるようです。 Functionオブジェクトのprototypeはそれで生成したオブジェクト(this)の"prototype"に設定されるわけではありません。 Javascriptは、オブジェクト自体に存在しないプロパティやファンクションは、そのコンストラクタのprototypeのプロパティやファンクションを探します。 hoge.constructor.prototypeにあなたの作成したm1というファンクションを持つオブジェクトが設定されているでしょう。