Maison > interface Web > js tutoriel > Extension ou écrasement de prototypes JavaScript : quelle approche est la meilleure ?

Extension ou écrasement de prototypes JavaScript : quelle approche est la meilleure ?

Mary-Kate Olsen
Libérer: 2024-11-21 10:48:11
original
1077 Les gens l'ont consulté

Extending vs. Overwriting JavaScript Prototypes: Which Approach is Best?

Définir un prototype JavaScript : comprendre les différences

Définir des prototypes d'objets en JavaScript est essentiel pour l'héritage et la réutilisabilité du code. Cependant, il existe deux approches courantes pour la définition d'un prototype : étendre le prototype existant ou l'écraser entièrement.

Option 1 : Extension du prototype existant

Person.prototype.sayName = function(name) {
   alert(name);
}
Copier après la connexion

Cette approche étend l'objet prototype actuel Person.prototype en ajoutant une nouvelle méthode sayName. Les instances existantes de Person hériteront de cette nouvelle méthode.

Option 2 : écraser le prototype

Person.prototype = {
   sayName: function(name) {
      alert(name);
   }
}
Copier après la connexion

Contrairement à l'option 1, cette approche attribue un nouvel objet prototype à Person .prototype, écrasant celui d'origine. Seules les futures instances de Person hériteront de la méthode sayName.

Différences fonctionnelles et avantages

La principale différence fonctionnelle est que l'option 1 permet aux instances existantes d'accéder à la nouvelle méthode, tandis que l'option 2 n'affecte que les instances futures.

Une autre différence est qu'en écrasant le prototype (option 2), vous supprimez par inadvertance toute autre propriété ou méthode précédemment définie. dans le prototype original. Bien que celles-ci n'incluent généralement que la propriété constructeur, il convient de noter cet inconvénient potentiel.

Recommandation

L'option 1 (extension) est généralement considérée comme plus concise et robuste car elle garantit que toutes les instances de Person peuvent accéder à sayName. Évitez l'option 2, sauf si vous devez réinitialiser le prototype pour des raisons spécifiques.

Approche alternative

Si la syntaxe littérale d'objet de l'option 2 vous plaît, envisagez d'utiliser Object. assigner pour étendre le prototype existant :

Object.assign(Person.prototype, {
   sayName: function(name) {
      alert(name);
   }
});
Copier après la connexion

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal