Maison >interface Web >js tutoriel >Pourquoi utiliser « new » dans « Derived.prototype = new Base » pour l'héritage JavaScript ?
Pourquoi utiliser le mot clé « nouveau » dans Derived.prototype = new Base ?
En JavaScript, l'héritage est réalisé via des prototypes. Pour étendre une classe existante, vous pouvez affecter le prototype de la classe enfant à une nouvelle instance de la classe parent. C'est là que le mot-clé 'nouveau' entre en jeu.
Dans le code suivant :
WeatherWidget.prototype = new Widget;
Le mot-clé 'nouveau' sert à deux fins :
Que se passe-t-il si « nouveau » est laissé Out ?
Sans « nouveau », vous n'appelleriez pas le constructeur de widget. Au lieu de cela, vous devrez fournir une liste d'arguments pour Widget(). Cependant, cela peut ne pas être possible et entraîner des erreurs.
Importance de ne pas partager les propriétés
Par défaut, les instances de WeatherWidget partageraient les valeurs des propriétés de la même instance. de Widget. Cela peut entraîner un comportement inattendu, car plusieurs instances de WeatherWidget peuvent remplacer ou modifier les propriétés de chacune.
Pour éviter cela, il est recommandé d'utiliser un constructeur « factice » (par exemple, Dummy.prototype = Widget.prototype). comme étape intermédiaire, qui crée un nouveau prototype pour WeatherWidget qui n'hérite pas des valeurs de propriété de l'instance parent. Cela garantit que chaque instance de WeatherWidget possède son propre ensemble de propriétés héritées.
Approches alternatives dans les versions JavaScript plus récentes
Dans ECMAScript 5 et versions ultérieures, vous pouvez utiliser :
WeatherWidget.prototype = Object.create(Widget.prototype, { constructor: {value: WeatherWidget} });
Cette approche présente l'avantage supplémentaire de rendre la propriété du constructeur non inscriptible, énumérable ou configurable.
Invocation explicite du constructeur parent
Vous devrez peut-être appeler explicitement le constructeur parent (par exemple, Widget.apply(this, arguments)) dans le constructeur enfant pour initialiser le parent exemple.
Conclusion
Comprendre l'utilisation de « new » dans Derived.prototype = new Base est crucial pour implémenter correctement l'héritage en JavaScript. Cela garantit que les classes enfants héritent du bon prototype et empêche le partage involontaire des valeurs de propriété entre les instances.
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!