protótipos e herança javascript [duplicado]

Sep 09 2020

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

ScottMarcus Sep 09 2020 at 20:27

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.

Geuis Sep 09 2020 at 20:28

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__.