Objecté Eva, e Functioné Adão, Adão ( Function) usa seu osso ( Function.prototype) para criar Eva ( Object). Então quem criou Adam ( Function)? - O inventor da linguagem JavaScript :-).
De acordo com a resposta da utsaina, quero adicionar mais informações úteis.
A coisa mais surpreendente para mim foi descobrir que Object.__proto__
aponta para Function.prototype, em vez de Object.prototype, mas tenho certeza de que há uma boa razão para isso :-)
Não deveria ser. Object.__proto__NÃO deve apontar para Object.prototype. Em vez disso, a instância de Object o, o.__proto__deve apontar paraObject.prototype .
(Perdoe-me por usar os termos classeinstance em JavaScript, mas você sabe disso :-)
Eu acho que a classe em Objectsi é uma instância Function, é por isso Object.__proto__ === Function.prototype. Portanto: Objecté Eva, e Functioné Adão, Adão ( Function) usa seu osso ( Function.prototype) para criar Eva (Object ).
Além disso, até a Functionprópria classe é uma instância de Functionsi mesma, ou seja,Function.__proto__ === Function.prototype , é também por isso queFunction === Function.constructor
Além disso, a classe regular Caté uma instância de Function, isto é Cat.__proto__ === Function.prototype.
A razão para o exposto acima é que, quando criamos uma classe em JavaScript, na verdade, estamos apenas criando uma função, que deve ser uma instância de Function. Objecte Functionsão apenas especiais, mas ainda são aulas, enquanto Caté uma aula regular.
Por uma questão de fator, no mecanismo JavaScript do Google Chrome, os seguintes 4:
Function.prototype
Function.__proto__
Object.__proto__
Cat.__proto__
Eles são todos ===(absolutamente iguais) aos outros 3, e seu valor éfunction 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
ESTÁ BEM. Então quem cria o special function Empty() {}( Function.prototype)? Pense nisso :-)