En JavaScript, quelle est la différence entre ces deux exemples:
Prérequis:
function SomeBaseClass(){
}
SomeBaseClass.prototype = {
doThis : function(){
},
doThat : function(){
}
}
Exemple d'héritage A utilisant Object.create:
function MyClass(){
}
MyClass.prototype = Object.create(SomeBaseClass.prototype);
Exemple d'héritage B utilisant le nouveau mot-clé
function MyClass(){
}
MyClass.prototype = new SomeBaseClass();
Les deux exemples semblent faire la même chose. Quand choisiriez-vous l'un plutôt que l'autre?
Une question supplémentaire: considérez le code dans le lien ci-dessous (ligne 15), où une référence au propre constructeur de la fonction est stockée dans le prototype. Pourquoi est-ce utile?
https://github.com/mrdoob/three.js/blob/master/src/loaders/ImageLoader.js
Extrait (si vous ne souhaitez pas ouvrir le lien):
THREE.ImageLoader.prototype = {
constructor: THREE.ImageLoader
}
Object.create
. Ceci est une erreur et devrait être rouvert.