Objectes Eva, y Functiones Adán, Adán ( Function) usa su hueso ( Function.prototype) para crear Eva ( Object). Entonces, ¿quién creó a Adam ( Function)? - El inventor del lenguaje JavaScript :-).
Según la respuesta de utsaina, quiero agregar más información útil.
Lo más sorprendente para mí fue descubrir que Object.__proto__
apunta a Function.prototype, en lugar de Object.prototype, pero estoy seguro de que hay una buena razón para eso :-)
NO debería ser. Object.__proto__NO debería señalar Object.prototype. En cambio, la instancia de Object o, o.__proto__debería apuntar aObject.prototype .
(Perdóname por usar los términos classyinstance en JavaScript, pero lo sabes :-)
Creo que la clase en Objectsí es una instancia de Function, por eso Object.__proto__ === Function.prototype. Por lo tanto: Objectes Eva, y Functiones Adán, Adán ( Function) usa su hueso ( Function.prototype) para crear Eva (Object ).
Además, incluso la clase Functionmisma es una instancia de Functionsí misma, es Function.__proto__ === Function.prototypedecir, también es por esoFunction === Function.constructor
Además, la clase regular Cates una instancia de Function, es decir Cat.__proto__ === Function.prototype.
La razón de lo anterior es, cuando creamos una clase en JavaScript, en realidad, solo estamos creando una función, que debería ser una instancia de Function. Objecty Functionson simplemente especiales, pero siguen siendo clases, mientras que Cates una clase regular.
Como cuestión de factor, en el motor JavaScript de Google Chrome, los siguientes 4:
Function.prototype
Function.__proto__
Object.__proto__
Cat.__proto__
Todos son ===(absolutamente iguales) a los otros 3, y su valor esfunction Empty() {}
> Function.prototype
function Empty() {}
> Function.__proto__
function Empty() {}
> Object.__proto__
function Empty() {}
> Cat.__proto__
function Empty() {}
> Function.prototype === Function.__proto__
true
> Function.__proto__ === Object.__proto__
true
> Object.__proto__ === Cat.__proto__
true
OKAY. Entonces, ¿quién crea el especial function Empty() {}( Function.prototype)? Piénsalo :-)