Tutorial Completo de Classes e Herança em ES6+ JavaScript
Domine Objetos Avançados e Prototipagem em JavaScript
Neste tutorial, vamos explorar objetos
Fundamentos de Arrays e ObjetosDomine arrays e objetos em JavaScript com este tutorial narrativo. Aprenda a utilizar métodos e exemplos práticos para aprimorar seu desenvolvimento web. avançados no JavaScript
Introdução ao JavaScript e Configuração do AmbienteDescubra neste tutorial narrativo como configurar seu ambiente de desenvolvimento e começar a programar em JavaScript de maneira prática e eficiente. e entender em detalhes como funciona a prototipagem. Abordaremos desde configurações mais refinadas de propriedades
Classes e Herança em ES6+Aprenda a dominar classes e herança em ES6+: escreva códigos JavaScript claros e eficientes com métodos, getters e setters. até o funcionamento interno do mecanismo de herança baseado em protótipos.
Ao final, você terá uma visão clara de como estender, modificar e criar comportamentos altamente customizáveis em seus objetos
Fundamentos de Arrays e ObjetosDomine arrays e objetos em JavaScript com este tutorial narrativo. Aprenda a utilizar métodos e exemplos práticos para aprimorar seu desenvolvimento web., aproveitando ao máximo as funcionalidades da linguagem.
Revisão Rápida sobre Objetos em JavaScript🔗
Em JavaScript
Introdução ao JavaScript e Configuração do AmbienteDescubra neste tutorial narrativo como configurar seu ambiente de desenvolvimento e começar a programar em JavaScript de maneira prática e eficiente., um objeto é formado por pares de chave e valor. Por exemplo:
const usuario = {
nome: "Maria",
idade: 28
};
Apesar de parecer simples, objetos
Fundamentos de Arrays e ObjetosDomine arrays e objetos em JavaScript com este tutorial narrativo. Aprenda a utilizar métodos e exemplos práticos para aprimorar seu desenvolvimento web. possuem recursos poderosos que vão além de armazenar dados. Vamos explorar essas possibilidades avançadas logo a seguir.
Aprofundando Propriedades: Descritores e Configuração🔗
Cada propriedade
Classes e Herança em ES6+Aprenda a dominar classes e herança em ES6+: escreva códigos JavaScript claros e eficientes com métodos, getters e setters. de um objeto em JavaScript possui atributos de configuração que definem como ela se comporta. Isso pode ser inspecionado e ajustado usando métodos como Object e
Variáveis, Tipos de Dados e OperadoresAprenda os conceitos essenciais de JavaScript, explorando variáveis, tipos de dados e operadores com exemplos claros e práticas dicas de programação..getOwnPropertyDescriptor()Object.
Variáveis, Tipos de Dados e OperadoresAprenda os conceitos essenciais de JavaScript, explorando variáveis, tipos de dados e operadores com exemplos claros e práticas dicas de programação..defineProperty()
- Enumerable (enumerável): indica se a propriedade
Classes e Herança em ES6+Aprenda a dominar classes e herança em ES6+: escreva códigos JavaScript claros e eficientes com métodos, getters e setters. aparece em operações de listagem (como for).
Estruturas de Controle: if, switch e loopsAprenda as estruturas de controle em JavaScript, como if/else, switch e loops, com exemplos claros e didáticos para otimizar seu código e lógica de programação....in - Writable (editável): indica se o valor da propriedade
Classes e Herança em ES6+Aprenda a dominar classes e herança em ES6+: escreva códigos JavaScript claros e eficientes com métodos, getters e setters. pode ser alterado. - Configurable (configurável): indica se a propriedade
Classes e Herança em ES6+Aprenda a dominar classes e herança em ES6+: escreva códigos JavaScript claros e eficientes com métodos, getters e setters. pode ser removida ou ter seu descritor alterado. - Value (valor): o valor armazenado na propriedade
Classes e Herança em ES6+Aprenda a dominar classes e herança em ES6+: escreva códigos JavaScript claros e eficientes com métodos, getters e setters.. - get e set: funções
Funções e Escopo no JavaScriptAprenda a utilizar funções e escopos em JavaScript com nosso guia prático. Melhore sua organização de código e evolua seus projetos com boas práticas. que interceptam a leitura e a escrita do valor.
Por exemplo, se quisermos criar uma propriedade
Classes e Herança em ES6+Aprenda a dominar classes e herança em ES6+: escreva códigos JavaScript claros e eficientes com métodos, getters e setters. não enumerável:
const produto = {
nome: "Caneta",
preco: 1.5
};
// Definindo uma propriedade não enumerável:
Object.defineProperty(produto, "fabricante", {
value: "Marca XYZ",
enumerable: false
});
// "fabricante" não aparecerá em um loop for...in:
for (let chave in produto) {
console.log(chave); // nome, preco
}
Observe que fabricante não aparece no loop porque não é enumerável.
Propriedades de Acesso (Getters e Setters)🔗
Outra característica interessante são as propriedades
Classes e Herança em ES6+Aprenda a dominar classes e herança em ES6+: escreva códigos JavaScript claros e eficientes com métodos, getters e setters. de acesso. Elas permitem que você controle como uma informação é lida (getter) e escrita (setter). É útil para validar
Validação de Código: W3C Validator e DebuggingAprenda a validar e corrigir erros de HTML com o W3C Validator. Descubra técnicas de debugging para melhorar a compatibilidade e a manutenção do seu site., formatar e processar valores de maneira centralizada.
const pessoa = {
_nome: "Carlos",
_sobrenome: "Santos",
get nomeCompleto() {
return `${this._nome} ${this._sobrenome}`;
},
set nomeCompleto(nome) {
const partes = nome.split(" ");
this._nome = partes[0];
this._sobrenome = partes[1] || "";
}
};
console.log(pessoa.nomeCompleto); // "Carlos Santos"
pessoa.nomeCompleto = "João Silva";
console.log(pessoa._nome); // "João"
console.log(pessoa._sobrenome); // "Silva"
Repare que aqui usamos _nome e _sobrenome como propriedades internas para demonstrar a ideia de encapsulamento
Closures e CurryingDescubra como utilizar closures para gerenciamento de escopo e currying para funções parciais, elevando seu código JavaScript a um novo patamar de modularidade.. Você pode escolher a convenção de nomenclatura que preferir, mas é comum usar o sublinhado para denotar campos “privados” em JavaScript.
Entendendo o Conceito de Prototype🔗
Enquanto a maioria das linguagens orientadas a objetos usam herança de classe, o JavaScript
Introdução ao JavaScript e Configuração do AmbienteDescubra neste tutorial narrativo como configurar seu ambiente de desenvolvimento e começar a programar em JavaScript de maneira prática e eficiente. faz isso via prototipagem. Cada objeto em JavaScript
Introdução ao JavaScript e Configuração do AmbienteDescubra neste tutorial narrativo como configurar seu ambiente de desenvolvimento e começar a programar em JavaScript de maneira prática e eficiente., por padrão, tem uma referência para um outro objeto chamado de seu protótipo (ou prototype). As propriedades
Classes e Herança em ES6+Aprenda a dominar classes e herança em ES6+: escreva códigos JavaScript claros e eficientes com métodos, getters e setters. e métodos do protótipo são herdados e ficam disponíveis para o objeto que o referencia.
- Quando acessamos uma propriedade
Classes e Herança em ES6+Aprenda a dominar classes e herança em ES6+: escreva códigos JavaScript claros e eficientes com métodos, getters e setters. em um objeto, o JavaScript primeiro procura nela própria. - Caso não encontre, ele “sobe” na cadeia de protótipos, verificando em seu protótipo.
- Isso prossegue até chegar no objeto
Fundamentos de Arrays e ObjetosDomine arrays e objetos em JavaScript com este tutorial narrativo. Aprenda a utilizar métodos e exemplos práticos para aprimorar seu desenvolvimento web. Object, que é o último da cadeia.
Variáveis, Tipos de Dados e OperadoresAprenda os conceitos essenciais de JavaScript, explorando variáveis, tipos de dados e operadores com exemplos claros e práticas dicas de programação..prototype
Podemos visualizar de forma simplificada a cadeia de protótipos assim:
Quando chegamos em Object e a propriedade
Variáveis, Tipos de Dados e OperadoresAprenda os conceitos essenciais de JavaScript, explorando variáveis, tipos de dados e operadores com exemplos claros e práticas dicas de programação..prototype
Classes e Herança em ES6+Aprenda a dominar classes e herança em ES6+: escreva códigos JavaScript claros e eficientes com métodos, getters e setters. ainda não foi encontrada, o resultado é undefined.
Variáveis, Tipos de Dados e OperadoresAprenda os conceitos essenciais de JavaScript, explorando variáveis, tipos de dados e operadores com exemplos claros e práticas dicas de programação.
Criando Objetos com Prototype Específico🔗
Uma forma de controlar o protótipo de um objeto é utilizar a função
Funções e Escopo no JavaScriptAprenda a utilizar funções e escopos em JavaScript com nosso guia prático. Melhore sua organização de código e evolua seus projetos com boas práticas. Object. Com ela, você define explicitamente qual é o protótipo do objeto
Variáveis, Tipos de Dados e OperadoresAprenda os conceitos essenciais de JavaScript, explorando variáveis, tipos de dados e operadores com exemplos claros e práticas dicas de programação..create()
Fundamentos de Arrays e ObjetosDomine arrays e objetos em JavaScript com este tutorial narrativo. Aprenda a utilizar métodos e exemplos práticos para aprimorar seu desenvolvimento web. recém-criado.
const animal = {
tipo: "desconhecido",
fazerSom() {
console.log("Som genérico...");
}
};
const gato = Object.create(animal);
gato.tipo = "Gato";
gato.fazerSom(); // "Som genérico..."
Note que gato não possui a propriedade
Classes e Herança em ES6+Aprenda a dominar classes e herança em ES6+: escreva códigos JavaScript claros e eficientes com métodos, getters e setters. fazerSom em si, mas ela é encontrada em seu protótipo animal. Quando chamamos gato.fazerSom(), o JavaScript
Introdução ao JavaScript e Configuração do AmbienteDescubra neste tutorial narrativo como configurar seu ambiente de desenvolvimento e começar a programar em JavaScript de maneira prática e eficiente. busca no objeto gato e, não encontrando, usa animal.fazerSom.
Verificando e Alterando o Prototype🔗
Para manipular diretamente o prototype de um objeto, podemos recorrer a métodos
Classes e Herança em ES6+Aprenda a dominar classes e herança em ES6+: escreva códigos JavaScript claros e eficientes com métodos, getters e setters. como:
- Object
Variáveis, Tipos de Dados e OperadoresAprenda os conceitos essenciais de JavaScript, explorando variáveis, tipos de dados e operadores com exemplos claros e práticas dicas de programação..getPrototypeOf(obj): retorna o protótipo do objeto
Fundamentos de Arrays e ObjetosDomine arrays e objetos em JavaScript com este tutorial narrativo. Aprenda a utilizar métodos e exemplos práticos para aprimorar seu desenvolvimento web.. - Object
Variáveis, Tipos de Dados e OperadoresAprenda os conceitos essenciais de JavaScript, explorando variáveis, tipos de dados e operadores com exemplos claros e práticas dicas de programação..setPrototypeOf(obj, protótipo): define um novo protótipo.
Por exemplo:
const veiculo = {
tipo: "Desconhecido"
};
const carro = {
rodas: 4
};
// Ajusta o protótipo de "carro" para o objeto "veiculo"
Object.setPrototypeOf(carro, veiculo);
console.log(carro.tipo); // "Desconhecido"
console.log(Object.getPrototypeOf(carro) === veiculo); // true
Construtores e Prototype🔗
Outra prática comum é criar objetos
Fundamentos de Arrays e ObjetosDomine arrays e objetos em JavaScript com este tutorial narrativo. Aprenda a utilizar métodos e exemplos práticos para aprimorar seu desenvolvimento web. usando funções
Funções e Escopo no JavaScriptAprenda a utilizar funções e escopos em JavaScript com nosso guia prático. Melhore sua organização de código e evolua seus projetos com boas práticas. construtoras. O JavaScript vincula a propriedade
Classes e Herança em ES6+Aprenda a dominar classes e herança em ES6+: escreva códigos JavaScript claros e eficientes com métodos, getters e setters. prototype da função
Funções e Escopo no JavaScriptAprenda a utilizar funções e escopos em JavaScript com nosso guia prático. Melhore sua organização de código e evolua seus projetos com boas práticas. construtora ao objeto que será o protótipo das instâncias criadas por ela.
function Livro(titulo, autor) {
this.titulo = titulo;
this.autor = autor;
}
Livro.prototype.exibirInfos = function () {
console.log(`Título: ${this.titulo}, Autor: ${this.autor}`);
};
const meuLivro = new Livro("JavaScript Avançado", "Desenvolvedor JS");
meuLivro.exibirInfos(); // "Título: JavaScript Avançado, Autor: Desenvolvedor JS"
Perceba que exibirInfos() não está diretamente em meuLivro, mas no objeto
Fundamentos de Arrays e ObjetosDomine arrays e objetos em JavaScript com este tutorial narrativo. Aprenda a utilizar métodos e exemplos práticos para aprimorar seu desenvolvimento web. associado a Livro.prototype. Toda instância de Livro herdará exibirInfos() através da cadeia de protótipos.
Boas Práticas na Criação de Objetos Avançados🔗
1. Use Object para configurações específicas: Se precisar de controle fino sobre enumerabilidade ou sobre setter/getter, prefira esse método ao criar as propriedades
Variáveis, Tipos de Dados e OperadoresAprenda os conceitos essenciais de JavaScript, explorando variáveis, tipos de dados e operadores com exemplos claros e práticas dicas de programação..defineProperty()
Classes e Herança em ES6+Aprenda a dominar classes e herança em ES6+: escreva códigos JavaScript claros e eficientes com métodos, getters e setters..
2. Evite sobrescrever o protótipo nativo de objetos
Fundamentos de Arrays e ObjetosDomine arrays e objetos em JavaScript com este tutorial narrativo. Aprenda a utilizar métodos e exemplos práticos para aprimorar seu desenvolvimento web. básicos: Alterar Object ou
Variáveis, Tipos de Dados e OperadoresAprenda os conceitos essenciais de JavaScript, explorando variáveis, tipos de dados e operadores com exemplos claros e práticas dicas de programação..prototypeArray pode causar comportamentos inesperados em toda a aplicação.
Fundamentos de Arrays e ObjetosDomine arrays e objetos em JavaScript com este tutorial narrativo. Aprenda a utilizar métodos e exemplos práticos para aprimorar seu desenvolvimento web..prototype
3. Mantenha clara a origem dos métodos
Classes e Herança em ES6+Aprenda a dominar classes e herança em ES6+: escreva códigos JavaScript claros e eficientes com métodos, getters e setters. e dados: Quando há muitos níveis de protótipo, é essencial manter o código organizado para que a origem de cada método
Classes e Herança em ES6+Aprenda a dominar classes e herança em ES6+: escreva códigos JavaScript claros e eficientes com métodos, getters e setters. seja compreensível.
Conclusão🔗
Compreender objetos
Fundamentos de Arrays e ObjetosDomine arrays e objetos em JavaScript com este tutorial narrativo. Aprenda a utilizar métodos e exemplos práticos para aprimorar seu desenvolvimento web. avançados e prototipagem é fundamental para aproveitar ao máximo as capacidades do JavaScript. Sabendo manipular descritores de propriedade
Classes e Herança em ES6+Aprenda a dominar classes e herança em ES6+: escreva códigos JavaScript claros e eficientes com métodos, getters e setters., definir getters e setters, criar cadeias de protótipos customizadas e trabalhar com funções construtoras, você consegue estruturar seu código de forma mais flexível e poderosa.
Essa base será de grande utilidade quando você avançar em aplicações que exijam estruturas de dados
Fundamentos de Arrays e ObjetosDomine arrays e objetos em JavaScript com este tutorial narrativo. Aprenda a utilizar métodos e exemplos práticos para aprimorar seu desenvolvimento web. complexas, arquitetura mais robusta ou herança entre diversos componentes. Esperamos que este tutorial tenha ajudado a iluminar o caminho dos objetos avançados em JavaScript e a demonstrar o que é possível antes mesmo de pensar em outras formas de abstração. Explore, pratique bastante e descubra como deixar seu código mais expressivo por meio dessa característica essencial da linguagem!
Autor: Marcelo V. Souza - Engenheiro de Sistemas e Entusiasta em IoT e Desenvolvimento de Software, com foco em inovação tecnológica.
Referências🔗
- Documentação oficial do MDN: developer.mozilla.org/pt-BR/docs/Web/JavaScript
- ECMAScript® Language Specification: tc39.es/ecma262/
há 9 meses atrás
há 13 meses atrás
há 13 meses atrás
há 12 meses atrás
há 12 meses atrás
há 10 meses atrás
há 10 meses atrás
há 10 meses atrás
há 10 meses atrás
há 10 meses atrás
há 10 meses atrás
há 9 meses atrás
há 9 meses atrás
há 9 meses atrás
há 9 meses atrás
há 9 meses atrás
há 9 meses atrás
há 9 meses atrás
há 9 meses atrás
há 9 meses atrás
há 9 meses atrás
há 9 meses atrás
há 9 meses atrás