Antigamente nas versões anteriores do javascript os métodos eram criados a cada instanciação do objeto, e usávamos o padrão prototype para resolver esse problema. Gostaria de saber se com essa nova versão os métodos já é compartilhado .
Antigamente nas versões anteriores do javascript os métodos eram criados a cada instanciação do objeto, e usávamos o padrão prototype para resolver esse problema. Gostaria de saber se com essa nova versão os métodos já é compartilhado .
De qual curso você esta se referindo? Você postou em off-topic!!!!
na verdade a informação foi retirada do livro Desenvolva jogos com HTML5 Canvas e JavaScript da casa do codigo.
E como estou fazendo os cursos de javascript que você ministra, me despertou a duvida.
Mas qual versão você esta se referindo? ES6?
versões anteriores a ES6 não compartilhavam, gostaria de saber se agora na versão ES6 já são compartilhado.
Métodos de classe são adicionados no prototype automaticamente. Aliás tem um exercício que mostro isso.
Tranquilo? :)
acho que passei batido por ela... mas so para esclarecer mais a questão:
Declarar métodos como funções anônimas dentro das construtoras tem um preço: maior consumo de memória. Cada vez que executamos o constru- tor, uma cópia da função anônima é criada na memória e cada instância terá sua cópia não somente do atributo, mas também da função:
function Carro(cor, velocMaxima) {
// ...
}
// Criando método com função anônima
this.acelerar = function() {
this.velocAtual += 10;
Pensando nisso, o JavaScript traz o recurso do prototype (protótipo), que é um objeto associado a uma função construtora. Colocando os métodos neste objeto, todas as instâncias usarão as mesmas cópias de cada método.
Esse é o trecho do livro no qual minha pergunta está baseada.
Só se você criar classes com métodos. Fora isso você tem que fazer igual a es5.
Resumindo: apenas declarações de classes com métodos do Es6 adicionam os métodos no prototype sem você precisar explicitar. Você esta fazendo é meu curso avançado de js, certo?
Se você usar constructor function em ES6 ta jogando fora o ES6 e terá que realizar prototype inheritance explicitamente.
Só posso falar pelo meu curso. Sobre o código do autor o mais indicado é você postar direto para ele no fórum da casa do código e entender por que ele não adicionou no prototype, já que usou ES5 com constructor function.
entendei, muito obrigado pela atenção!