Solucionado (ver solução)
Solucionado
(ver solução)
11
respostas

Versão anterior do javascript

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 .

11 respostas

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.

solução!

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!