Maison > interface Web > js tutoriel > Pourquoi Child.prototype = Parent.prototype est-il une mauvaise idée pour l'héritage JavaScript ?

Pourquoi Child.prototype = Parent.prototype est-il une mauvaise idée pour l'héritage JavaScript ?

DDD
Libérer: 2024-11-13 16:09:02
original
772 Les gens l'ont consulté

Why is Child.prototype = Parent.prototype a Bad Idea for JavaScript Inheritance?

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal