Em JavaScript, qual é a diferença entre estes 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 própria 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 deseja abrir o link):
THREE.ImageLoader.prototype = {
constructor: THREE.ImageLoader
}
Object.create
. Isso é um erro e deve ser reaberto.