質問: Object);//true console.log(o.__proto__===Object.prototype);//true ``` functionが付くとプロトタイプオブジェクトは、Function.prototype、コンストラクタは、Functionです。 {}だけだとプロトタイプオブジェクトは、Object.prototypeで、コンストラクタは、Objectです。 関数と{}でプロトタイプオブジェクトとコンストラクタが違うのは、何故なのでしょうか。何かしらの仕様上の都合があって 違うのだと思うのですがObject.prototypeのプロパティとFunction.prototypeのプロパティを見てみましたがピンと来ません。
回答: `function`が付くと`new Function`と考えればいいように、`{}`のときは`new Object`と考えればいいのです。 また、関数が`Function`をプロトタイプに持っていなければ、関数独自のメソッドを呼び出すことができません。`Function`のメソッドとしては、`call`や`apply`、`bind`などがあります。 参考: Function - JavaScript | MDN