tem como alguem me explicar de uma forma mais resumida o prototype e heranças?
tem como alguem me explicar de uma forma mais resumida o prototype e heranças?
Olá, Gabriel.
Vou tentar te passar aquilo que consegui entender.
O javaScript não tem uma implementação de classes como PHP e JAVA. Com a chegada do ES6, houve uma implementação da sintaxe, para tornar mais simples a escrita dessas classes. Mas no fundo é só uma forma, mais simples, de usar o prototype. Pois toda a linguagem é baseada nesse conceito de protótipo.
Quase tudo que vc usa no javascript é um objeto, e esses objetos, tem uma forte tendência a herdar (Inheritance) as propriedades e métodos de um objeto anterior. Desde que, para isso, ele tenha alguma ligação.
Essa herança + ligação (link) é denominado como Prototype Chain
.
A cadeia de protótipos, citada anteriormente percorre todos os objetos ligados, até chagar no "Objeto raiz" (Object.prototype
), que por sua vez não herda propriedade de nenhum outro (null
).
Independente de qual seja, Objeto, função ou array. Todas vão percorrer a estrutura de cadeia até encontrar a propriedade que foi declarada, até o objeto raiz.
Ex: Vc pode testar usando o console do browser
Objetos
const myObject = {
nome: "Eu",
idade: "30"
}
myObject
//myObject.__proto__ --> Object.prototype --> null
Array
const myArray = [1, 2, 3, 'eu', 30];
myArray
//myArray.__proto__ --> Array.prototype --> Object.prototype --> null
Função
function myFunction() {
return "olá mundo"
}
myFunction
//myFunction.__proto__ --> Function.prototype --> Object.prototype --> null
Vc só precisa se atentar ao fato de que existem as propriedades do Prototype Chain e as propriedade de cada objeto.
Ex:
function Person(nome, idade) {
this.nome = nome;
this.idade = idade;
}
const pessoa = new Person("Eu", 30)
pessoa
herda nome e idade
e todas as propriedades da Function.prototype
e Object.prototype
Enquanto,
Person
herda Function.prototype
e Object.prototype
bom, pra não ser mais prolixo eu vou parar por aqui kkkk
espero ter ajudado.