Héritage en JavaScript : pourquoi ne pas utiliser Child.prototype = Parent.prototype ?
En JavaScript, l'héritage peut être réalisé par délégation, en utilisant Enfant.prototype = new Parent(); pour lier le prototype enfant à une nouvelle instance du prototype parent. Cependant, définir Child.prototype = Parent.prototype crée un comportement inattendu.
Cette affectation définit la propriété proto de Child.prototype sur Parent.prototype. Cela signifie que toute modification apportée à Child.prototype ou Parent.prototype affectera le prototype de l'autre objet. Ce comportement est problématique car il rompt l'encapsulation et l'indépendance des hiérarchies d'objets distinctes.
Dans l'exemple fourni, l'attribution de this.hitBox.width et this.hitBox.height dans le constructeur Spaceship conduit à un résultat différent en fonction de la méthode d'héritage. Lors de l'utilisation de Spaceship.prototype = new GameObject();, la propriété this.proto de Spaceship est définie sur GameObject, tandis que lors de l'utilisation de Spaceship.prototype = GameObject.prototype, this.proto est définie sur Spaceship.
Au lieu de cela de ces méthodes, en utilisant Spaceship.prototype = Object.create(GameObject.prototype); crée une copie du prototype GameObject, permettant d'apporter des modifications à Spaceship.prototype sans affecter GameObject.prototype. Cela maintient l'indépendance et l'encapsulation des hiérarchies d'objets tout en préservant la relation d'héritage souhaitée.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!