JavaScript é uma linguagem estabelecida, mas apenas adicionou suporte para programação orientada a objetos (OOP) clássica no ES6. Até adicionar recursos como declarações de classe, o JavaScript lidava com OOP usando um paradigma baseado em protótipo menos conhecido. Com qualquer abordagem, no entanto, você pode criar aplicativos complexos que usam recursos baseados em objeto.

Um construtor em JavaScript prototípico se parece muito com qualquer outra função. A principal diferença é que você pode usar essa função de construtor para criar objetos.

O que é um construtor em JavaScript?

Os construtores são um dos os conceitos fundamentais em programação orientada a objetos. Um construtor é uma função que você pode usar para criar uma instância de um objeto. Além de criar um novo objeto, um construtor especifica as propriedades e comportamentos que irão pertencer a ele.

Sintaxe do Construtor

funçãoNameOfConstructor() {
this.propriedade1 = "Propriedade1";
this.propriedade2 = "Propriedade2";
this.propriedade3 = "Propriedade3";
}

Você pode criar um construtor com o função palavra-chave, pois é essencialmente como qualquer outra função. No entanto, os construtores seguem as seguintes convenções:

  1. Para distingui-los de outras funções, use um nome para seu construtor que comece com uma letra maiúscula.
  2. Construtores usam o esse palavra-chave de forma diferente. Dentro de um construtor, esse refere-se ao novo objeto que o construtor criará.
  3. Ao contrário das funções JavaScript, os construtores definem propriedades e comportamentos em vez de retornar valores.

Usando um construtor para criar novos objetos

Em JavaScript, usar um construtor para criar um objeto é uma tarefa fácil. Aqui está um construtor simples com uma invocação a seguir:

funçãoEstudante() {
este.nome = "gloria";
este.gênero = "Fêmea";
esse.idade = 19;
}

deixar estudante feminino = novo Estudante();

Neste exemplo, estudante Feminina é um objeto criado a partir do Estudante construtor. Use o novo palavra-chave para chamar a função como um construtor. Esta palavra-chave diz ao JavaScript para criar uma nova instância de Estudante. Você não deve chamar esta função sem o novo palavra-chave porque o esse dentro do construtor não apontará para um novo objeto. Após a construção, estudante Feminina tem todas as propriedades de Estudante. Você pode acessar e modificar essas propriedades como faria com qualquer outro objeto.

Coisas importantes a saber sobre construtores JavaScript

Trabalhar com construtores pode ser muito cansativo e, ao mesmo tempo, pode ser uma tarefa fácil. Aqui estão algumas coisas importantes que qualquer desenvolvedor deve saber sobre como trabalhar com construtores.

Usando construtores com argumentos

Você pode estender um construtor para receber argumentos. Isso é muito importante se você deseja escrever um código responsivo e flexível.

Sempre que você criar um objeto de um construtor, o objeto herdará todas as propriedades declaradas no construtor. Por exemplo, o estudante Feminina você criou acima terá propriedades nome, gênero, e idade com valores iniciais fixos. Embora você possa alterar cada propriedade manualmente, seria muito trabalhoso se você estivesse escrevendo um programa usando muitos objetos.

Felizmente, os construtores JavaScript podem aceitar parâmetros, como qualquer outra função. Você pode mudar o Estudante construtor para aceitar dois parâmetros:

funçãoEstudante(nome / gênero) {
esse.nome = nome;
esse.gênero = gênero;
esse.idade = 19;
}

Todos os objetos criados acima terão idade definido como 19. Você pode projetar seu construtor dessa maneira se houver uma propriedade que deseja que todos os objetos tenham.

Agora você pode definir objetos exclusivos do mesmo construtor passando diferentes argumentos.

Os argumentos tornam os construtores mais flexíveis. Eles economizam tempo e incentivam o código limpo.

Definindo Métodos de Objeto

Um método é uma propriedade de objeto que é uma função. Os métodos aprimoram seu código em OOP, pois adicionam comportamentos diferentes aos seus objetos. Aqui está um exemplo:

funçãoEstudante(nome / gênero) {
esse.nome = nome;
esse.gênero = gênero;
esse.idade = 19 ;

esse.sayName = função () {
retornar`Meu nome é ${nome}`;
}
}

O acima adiciona a função digaNome ao construtor.

Suponha que você use esse construtor para criar um objeto que você armazena em uma variável, estudante Feminina. Você pode então chamar esta função com o código abaixo:

estudante Feminina.sayName()

o protótipo

Anteriormente, criamos Estudante de forma que todas as suas instâncias tenham um idade imóvel com valor de 19. Isso resultará em uma variável duplicada para cada Estudante instância que você cria.

Para evitar essa duplicação, o JavaScript usa o conceito de protótipos. Todos os objetos criados a partir de um construtor compartilham as propriedades de seu protótipo. Você pode adicionar o idade propriedade para Estudante protótipo como mostrado abaixo:

Student.prototype.age = 19;

Ao fazer isso, todas as instâncias de Estudante terá o idade propriedade. declarando propriedades do protótipo é uma maneira de reduzir o código duplicado em seu aplicativo. Isso torna seu código o mais padrão possível.

Uma propriedade de protótipo pode ser um objeto

Você pode adicionar propriedades de protótipo individualmente, conforme explicado acima. Mas se você tiver muitas propriedades para adicionar, isso pode ser inconveniente.

Como alternativa, você pode conter todas as propriedades necessárias em um novo objeto. Ao fazer isso, você definirá todas as propriedades de uma só vez. Por exemplo:

Aluno.protótipo = {
idade: 19,
corrida: "Branco",
incapacidade: "Nenhum"
}

Lembre-se de definir o construtor propriedade ao definir protótipos para um novo objeto.

Aluno.protótipo = { 
construtor: Estudante,
idade: 19,
corrida: "Branco",
incapacidade: "Nenhum"
}

Você pode usar essa propriedade para verificar qual função do construtor criou uma instância.

Supertipos e Herança

Herança é um método que os programadores empregam para reduzir erros em seus aplicativos. É uma forma de aderir Não se repita (SECO) princípio.

Suponha que você tenha dois construtores—Estudante e Professor- que têm duas propriedades de protótipo semelhantes.

Aluno.protótipo = { 
construtor: Estudante,

dizerNome: função () {
retornar`Meu nome é ${nome}`;
}
}

Professor.protótipo = {
construtor: Professor,

dizerNome: função () {
retornar`Meu nome é ${nome}`;
}
}

Ambos os construtores definem o digaNome método, identicamente. Para evitar essa duplicação desnecessária, você pode criar um supertipo.

funçãoDetalhes individuais(){};

DetalhesIndividuais.prototype = {
construtor: Detalhes individuais,

dizerNome: função () {
retornar`Meu nome é ${nome}`;
}
};

Você pode então remover digaNome de ambos os construtores.

Para herdar as propriedades do supertipo, use Object.create(). Você define o protótipo de ambos os construtores para uma instância do supertipo. Neste caso, definimos o Estudante e Professor protótipos para uma instância de IndividualDetails.

Aqui está:

Aluno.protótipo = Objeto.create (IndividualDetails.prototype);
Professor.protótipo = Objeto.create (IndividualDetails.prototype);

Ao fazer isso, Estudante e Professor herdar todas as propriedades do supertipo, Detalhes individuais.

É assim que se pratica DRY em OOP usando supertipos.

Os construtores mudam o jogo

Os construtores são um componente-chave do JavaScript, e dominar sua funcionalidade é crucial para o desenvolvimento de aplicativos JavaScript OOP. Você pode usar um construtor para criar objetos que compartilham propriedades e métodos. Você também pode usar herança para definir hierarquias de objetos.

No ES6, você pode usar o aula palavra-chave para definir classes clássicas orientadas a objetos. Esta versão do JavaScript também suporta um construtor palavra-chave.