TransWikia.com

Criação de objetos em JavaScript

Stack Overflow em Português Asked on November 27, 2021

Digamos que queremos criar um objeto chamado Retângulo (se desejar, com propriedades como comprimento, largura, perímetro e área). Conforme mostrado no próximo diagrama (criado com base nas informações presentes neste link), podemos criar objetos usando pelo menos duas maneiras diferentes

  1. Inicializadores de objeto (Object initializers)
  2. Funções de construtor (Constructor functions)

Criar objetos em JavaScript

Então, dentro dos inicializadores de objetos, há pelo menos três maneiras diferentes para criar.

Entendo que, à primeira vista, o uso da função construtora exigirá escrever a função e só então inicializá-la. Algo como

function Rectangle(a, b) {
    this.length = a;
    this.width = b;
    this.perimeter = 2 * (a+b);
    this.area = a * b;
}

e depois usar

const rec = new Rectangle(a, b);

Embora possa parecer um trabalho extra, quando queremos usar as funções de construtor? Além disso, é irrelevante se inicializarmos com o new Rectangle(), Rectangle.create() ou var Rectangle = {}?

One Answer

Há uma enorme diferença entre os 3.

Quando você cria o objeto através do construtor este é chamado e é aquele código que criará o objeto da forma como ele foi escrito. Talvez queira saber mais sobre em Para que serve um construtor?.

O segundo chama uma função padrão que todo objeto de JS tem, que é a função create(). Ela funciona como uma espécie de construtor quando não há ou não usa o construtor escrito especificamente para um tipo de objeto. Ele faz o melhor esforço para criar um objeto daquele tipo que faça sentido. Algumas propriedades do objeto podem ser inicializadas com os valores já declarados na definição do protótipo do objeto.

A terceira forma sequer tem uma informação que objeto está criando, apenas que está criando um objeto e ele será essencialmente vazio (tem o que todo objeto já tem em JS). Você poderá adicionar membros dentro dele depois ou até mudar completamente esse objeto. Na verdade, pelo menos no código mostrado, está criando uma vaiável chamada Rectangle que nada tem a ver com o objeto que quer definir.

Na maioria das vezes o construtor é a forma mais correta, especialmente se ele existe que se tornaria quase obrigatório.

Answered by Maniero on November 27, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP