JavaScript OOP (Protótipo) #2
Nov 27 2022
Olá amigos, sou Bennison, neste blog, vou explicar como OOP funciona em Javascript e explicar como ele difere do OOP clássico. Antes de ler este artigo, leia meu blog anterior sobre os fundamentos da POO.

Olá amigos, sou Bennison, neste blog, vou explicar como OOP funciona em Javascript e explicar como ele difere do OOP clássico. Antes de ler este artigo, por favor, leia meu blog anterior sobre os fundamentos da OOP .
O que é um Protótipo?
- Em Javascript, temos algo chamado protótipo. Em JavaScript, todo objeto terá um link para um determinado protótipo. Então cada objeto tem protótipos. o protótipo também contém propriedades e métodos.
- Aqui o importante é que os métodos e propriedades do protótipo possam ser acessados pelo objeto.
- Na OOP Clássica, um objeto é instanciado da classe, o que é chamado de instanciação. Aqui a classe é apenas um projeto para criar Objetos.
- Mas em Javascript, essa terminologia é apenas diferente. Aqui , cada objeto é vinculado a outros objetos e esses objetos são chamados de protótipos .

- Herança prototípica significa um protótipo que contém métodos e protótipos acessíveis a todos os objetos vinculados a esse protótipo.
- Assim, o objeto herda métodos e propriedades do protótipo, é assim que se chama herança prototípica. essa herança é diferente da herança de classe, que é uma classe herdada da outra classe. Mas, neste caso, instância herdada da classe base.
- Na imagem acima, no javascript a seta OOP está apontando para cima, isso significa que o objeto delega seus comportamentos aos protótipos.
- Na OOP clássica, os métodos são copiados da classe para as instâncias (objetos).
const numbers = [1, 2, 3, 4,5];
numbers.map((num) => num * 2)


- Uma função construtora é usada para criar objetos a partir de funções. é assim que os objetos integrados, como métodos Array e map, são implementados.
- Esta é uma alternativa moderna às funções do construtor. Classes ES6 funcionam da mesma forma que a função construtora. A classe ES6 não se comporta como um OOP Clássico. Nos bastidores, as classes ES6 são implementadas com funções Constructor.
class User {
constructor(firstName, lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
getFullName() {
console.log(this.firstName + ' ' + this.lastName);
}
}
const user = new User('Bennison', 'J');
console.log(user); // { firstName: 'Bennison', lastName: 'J' }
console.log(user.hasOwnProperty('firstName')); // true
console.log(user.hasOwnProperty('getFullName')); // false
- O método “object.create()” é a maneira mais fácil de vincular um objeto a um objeto de protótipo.
const objOne = {
firstName: 'Bennison',
lastName: 'J',
getFullName: function () {
console.log(this.firstName + ' ' + this.lastName);
}
};
const objTwo = Object.create(objOne);
console.log(objTwo); // {}
objTwo.getFullName(); // Bennison J
- Espero que, neste blog, tenhamos aprendido o básico da herança prototípica em Javascript, se você não conseguiu entender os exemplos acima, não se preocupe, explicarei mais sobre esses conceitos em meus próximos blogs. Obrigado por ler este blog, até breve.
George Harrison ficou chateado por suas letras de 'Hurdy Gurdy Man' de Donovan não terem sido usadas