Herança JavaScript: Object.create vs new
Em JavaScript, qual é a diferença entre esses dois exemplos:
Pré-requisito:
function SomeBaseClass(){
}
SomeBaseClass.prototype = {
doThis : function(){
},
doThat : function(){
}
}
Exemplo de herança A usando Object.create:
function MyClass(){
}
MyClass.prototype = Object.create(SomeBaseClass.prototype);
Exemplo de herança B usando a nova palavra-chave
function MyClass(){
}
MyClass.prototype = new SomeBaseClass();
Ambos os exemplos parecem fazer a mesma coisa. Quando você escolheria um sobre o outro?
Uma pergunta adicional: Considere o código no link abaixo (linha 15), onde uma referência ao construtor da função é armazenada no protótipo. Por que isso é útil?
https://github.com/mrdoob/three.js/blob/master/src/loaders/ImageLoader.js
Trecho (se você não quiser abrir o link):
THREE.ImageLoader.prototype = {
constructor: THREE.ImageLoader
}