Ao fazer:
Child.prototype = Parent.prototype;
Você está essencialmente criando uma referência ao protótipo de Parent
, o que significa que qualquer propriedade adicionada ao protótipo de Child
agora é adicionada ao protótipo de Parent
.
Por outro lado, fazendo:
Child.prototype = new Parent();
O protótipo de Child
herda todas as propriedades de Parent
via encadeamento de protótipo, portanto, adicionar uma propriedade ao protótipo de Child
não afeta o protótipo de Parent
.
Child.prototype = Object.create(Parent.prototype);
O texto acima é o mesmo, exceto que ele não executa a função construtor do Parent
ao criar Child
' s protótipo.