protótipos e herança javascript [duplicado]
Minha pergunta é Object é o último na cadeia de protótipo, todos os objetos herdam propriedades e métodos dele como ele herda métodos de Function.prototype, porque Object.__proto__ === Function.prototype// verdadeiro, porque Object.__proto__não é nulo.
Respostas
O fundamental Objectem JavaScript deve ter uma maneira de ser instanciado, portanto, requer um prototypeobjeto para auxiliar em linhas como esta:
let myObj = new Object();
E é por isso que Object.__proto__não null.
O Functionobjeto é um tipo especial de objeto que facilita a instanciação do objeto por meio de um construtor e, quando usado dessa forma, é conhecido como "função de construtor". Portanto, faz sentido Objectherdar de um Functionobjeto para que as instâncias do objeto possam ser feitas.
A função também é um objeto. Portanto, também herda de Object.
Mas não se confunda Object.__proto__. Isso é algo que o navegador adiciona e não faz realmente parte da linguagem. Portanto, não dependa nem use-o.
Essencialmente, Function.prototypeé Object.__proto__.