ここで述べたhttps://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function関数オブジェクトのインスタンスのコンストラクタ プロパティは、「オブジェクトのプロトタイプを作成する関数を指定します」。これは紛らわしいので、Object.constructorは「オブジェクトのプロトタイプを作成する関数」ですか? 「オブジェクト」とは正確にはどのオブジェクトですか?
Object.constructor のコンストラクター プロパティ自体がなぜなのかを理解しようとしています。
Object.constructor===Object.constructor.constructor // なぜ?
編集:TJ Crowderの答えは良いと思いますが、彼の言葉の言い回しはかなりあいまいです(少なくとも私にとっては、最初に読んだときに理解するのが難しくなっています). これが言い換えられた答えです:
1)オブジェクトは関数のインスタンスです
2)オブジェクトにはコンストラクターというプロパティがないため、 Object.constructorを呼び出すと、実際にはObject.[[prototype]].constructor (別名Object.__ proto __.constructor ) が返されます。
3) Object.constructor (別名Object.__ proto __.constructor ) はFunctionのインスタンスです。
4) ObjectとObject.constructor (別名Object.__ proto __.constructor ) の両方がFunctionのインスタンスであるため、両方とも同じオブジェクトを参照する__ proto __プロパティを持っています。つまり、Object.__ proto __ === Object.constructor.__ proto __ (別名Object.__ proto __.constructor._ proto _ )
5) Object.constructor===Object.constructor.constructorの行は、実際にはObject.__ proto __.constructor===Object.constructor.__ proto __.constructorの行と同じです。
6) 手順 4 と 5 を組み合わせると、Object.constructor===Object.constructor.constructorが得られます。
7) 手順 4) に進む