En JavaScript, ¿cuál es la diferencia entre estos dos ejemplos?
Requisito previo:
function SomeBaseClass(){
}
SomeBaseClass.prototype = {
doThis : function(){
},
doThat : function(){
}
}
Ejemplo de herencia A usando Object.create:
function MyClass(){
}
MyClass.prototype = Object.create(SomeBaseClass.prototype);
Ejemplo de herencia B usando la nueva palabra clave
function MyClass(){
}
MyClass.prototype = new SomeBaseClass();
Ambos ejemplos parecen hacer lo mismo. ¿Cuándo elegirías uno sobre el otro?
Una pregunta adicional: considere el código en el siguiente enlace (línea 15), donde se almacena una referencia al propio constructor de la función en el prototipo. ¿Por qué es útil esto?
https://github.com/mrdoob/three.js/blob/master/src/loaders/ImageLoader.js
Extracto (si no desea abrir el enlace):
THREE.ImageLoader.prototype = {
constructor: THREE.ImageLoader
}
Object.create
. Esto es un error y debe reabrirse.