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
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 = {}
?
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
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP