


Résumé de l'utilisation de l'héritage dans les compétences javascript_javascript
Les exemples de cet article résument l'utilisation de l'héritage en JavaScript. Partagez-le avec tout le monde pour votre référence. Les détails sont les suivants :
Exemple :
* Implémentez la sous-classe pour hériter de la classe parent, mais ne générera pas d'attributs et de méthodes redondants
* @returns {Fonction}
*/
définir(fonction(){
fonction de retour (sous-Type, superType){
var proto = nouvel objet (superType.prototype);
proto.constructor = sousType;
subType.prototype = proto;
};
});
//————————————————————————
définir(fonction(){
fonction ostring(s)
{
this.str = s;
this.length = this.str.length;
>
ostring.prototype.show = fonction(){
alerte(this.str);
};
retourner ostring;
});
//————————————————————————
définir(['hériter', 'ostring'], fonction(hériter, ostring){
fonction wstring(s){
//Utilisez call pour appeler le constructeur de la classe parent
ostring.call(this, s);
this.chlength = 2 * s.length;
>
//Hériter d'autres attributs
hériter(wstring, ostring);
wstring.prototype.add = fonction(w)
{
alert(this.str w);
};
retourner la chaîne ;
});
Regardez à nouveau l'exemple
1. Utilisez la fonction pour implémenter :
This.name = nom;
>
Personne.prototype.getName = function() {
Renvoie this.name;
>
function Auteur(nom, livres) {
This.inherit=personne;
This.inherit(nom);
This.books = livres;
>
var au=new Author("dororo","Apprendre beaucoup");
au.nom
Ou équivalent :
This.name = nom;
>
Personne.prototype.getName = function() {
Renvoie this.name;
>
function Auteur(nom, livres) {
Personne.appel(ce, nom);
This.books = livres;
>
var au=new Author("dororo","Apprendre beaucoup");
au.getName
Puisqu'il s'agit simplement de l'utiliser comme paramètre, d'appeler le constructeur de la classe parent Person et d'attribuer tous les champs affectés à la classe parent à la sous-classe Author, tous les champs définis (prototype) autres que le constructeur Person de la classe parent ne seront pas utilisé par la sous-classe sera hérité. Ainsi, dans l'exemple ci-dessus, au.getName ne sera pas défini car getName est défini dans l'objet prototype Person.
De plus, le constructeur de la sous-classe doit appeler le constructeur de la classe parent avant de définir son propre domaine, afin d'éviter que la définition de la sous-classe ne soit écrasée par la classe parent. En d’autres termes, le livre d’attributs défini par l’auteur doit être après Person.call, sinon il sera écrasé par les attributs de Person. En même temps, il est préférable de ne pas utiliser prototype pour définir le domaine fonctionnel de la sous-classe dans la sous-classe, car une fois qu'une sous-classe est nouvelle et instanciée, le prototype doit être exécuté, puis le constructeur de la classe parent est appelé, ce qui est également facile à faire. Les attributs de la classe parent sont écrasés.
2. Utiliser un prototype pour mettre en œuvre :
This.name = nom;
>
Personne.prototype.getName = function() {
Renvoie this.name;
>
function Auteur(nom, livres) {
This.books = livres
>
Author.prototype=nouvelle personne(nom);
Author.prototype.constructor=Auteur;
Auteur.prototype.getBooks = function() {
Renvoyez ces.books ;
>
var au1=new Author("dororo1","Apprendre beaucoup");
var au2=new Author("dororo2","En savoir moins");
alert(au1.getName());
alert(au2.getName());
Cette méthode évite le problème de l’impossibilité d’hériter du prototype lors de l’implémentation de la fonction. Parce que l'instance Author.prototype=new Person(name); new Person() appellera le constructeur Person et toutes les propriétés du prototype. Mais l'inconvénient est que Author.prototype a déjà été instancié. Ainsi, lorsqu'une sous-classe est instanciée, tous les types de données non basiques sont des copies de référence. Ainsi, dans l'exemple ci-dessus, la valeur renvoyée par les deux instances au1 et au2 est dororo1.
3. Utilisez le « mélange » pour réaliser
This.name = nom;
>
Personne.prototype.getName = function() {
Renvoie this.name;
>
function Auteur(nom, livres) {
This.base = new Person(name);
for(clé var dans this.base){
if(!this[key]){
This[key]=this.base[key];
}
}
This.book=books;
>
var au1=nouvel Auteur("dororo1","work");
var au2=nouvel Auteur("dororo2","play");
alert(au1.getName());
alert(au2.getName());
au1.book;
au2.book;
C'est une extension qui copie tous les champs de la classe parent vers la classe enfant. Il n’y a aucun problème avec les deux aspects ci-dessus.
Mode combinaison parasite)
L'héritage JS comprend l'héritage d'attributs et l'héritage de méthodes, qui sont implémentés via différentes méthodes.
1. Héritage des attributs
L'héritage des attributs est obtenu en modifiant l'environnement d'exécution de la fonction. La modification de l'environnement d'exécution d'une fonction peut être réalisée à l'aide des méthodes call() et apply().
On crée d'abord une "classe" Animal (car il n'y a pas de notion de classe en JS, voici juste une simulation, il s'agit en fait juste d'un objet Function).
//Ajouter un attribut typeName
à l'environnement d'exécution (this) de la méthode actuelle //Mais l'environnement d'exécution (ceci) ne peut être déterminé que lorsque cette fonction est exécutée
this.typeName = typeName;
this.colors = ["red","while"];
>
//Vous souhaitez ajouter deux méthodes (partagées par objet) au prototype de la fonction
Animal.prototype.Shout = function () { alert("Je suis : --" this.typeName);};
Animal.prototype.Eat = function () { alert("Je suis : --" this.typeName) };
//--Définir un lion--"classe" (en fait une fonction)
fonction Lion(tn) {
//--Exécutez la méthode Animal et modifiez l'environnement d'exécution d'Animal en Lion's this
via le premier paramètre de apply // De même, chez Lion, cela ne peut être déterminé que lors de l'exécution
Animal.apply(this,["Lion"]);//--Hérité des attributs variables de la classe parent, c'est nouveau car c'est Lion, c'est Lion
>
Lion.prototype = Animal.prototype; //Héritez la méthode de la classe parent et faites-la - mais ce n'est pas bien écrit. Lorsque la sous-classe ajoute une méthode, la classe parent a également cette méthode.
Lion.prototype.Hunt = fonction () {
alert("Je suis : Lion, je veux chasser~~·~");
>
var amim = nouvel Animal();
aminm.Hunt(); //---Vous pouvez accéder aux méthodes de la sous-classe, ce qui n'est pas bon
//----Alors comment résoudre ce problème ? ? ? ? ? ?
//---Solution : Lors de l'héritage de méthodes, vous pouvez écrire comme ceci :
Lion.prototype = new Animal();//Héritez la méthode de la classe parent et attribuez l'objet Animal au prototype prototype En fait, il a aussi des attributs
. var lion = new Lion(); //En plus de créer, le mot-clé new modifie également l'environnement d'exécution de l'objet Lion en l'objet Lion lui-même
// ---En d'autres termes, une fois new terminé, ceci dans la fonction Lion est la fonction Lion elle-même, puis la fonction Lion
Analyser le nouveau mot-clé :
Le nouveau mot-clé est très génial. Dans le code ci-dessus, le nouveau mot-clé a accompli les tâches suivantes :
1) Ouvrez l'espace de stockage pour préparer le stockage des objets Lion
2) Modifiez l'environnement d'exécution de l'objet Lion lui-même pour que celle de la fonction Lion pointe vers l'objet fonction Lion lui-même.
3) Appelez le "constructeur" de la "classe" Lion pour créer un objet Lion
4) Attribuez l'adresse du tas de l'objet fonction Lion à la variable l À ce moment, l pointe vers l'objet fonction Lion
.
lion.Shout();
lion.Eat();
Mais ce type d'héritage présente un inconvénient : le constructeur de la classe parent est appelé deux fois, une fois, puis à nouveau.
J'espère que cet article sera utile à la conception de la programmation JavaScript de chacun.

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Dans l'héritage de fonction, utilisez le « pointeur de classe de base » et le « pointeur de classe dérivée » pour comprendre le mécanisme d'héritage : lorsque le pointeur de classe de base pointe vers l'objet de classe dérivé, une transformation ascendante est effectuée et seuls les membres de la classe de base sont accessibles. Lorsqu’un pointeur de classe dérivée pointe vers un objet de classe de base, une conversion vers le bas est effectuée (dangereuse) et doit être utilisée avec prudence.

WPS est une suite logicielle bureautique couramment utilisée et la fonction de table WPS est largement utilisée pour le traitement des données et les calculs. Dans le tableau WPS, il existe une fonction très utile, la fonction DATEDIF, qui permet de calculer le décalage horaire entre deux dates. La fonction DATEDIF est l'abréviation du mot anglais DateDifference. Sa syntaxe est la suivante : DATEDIF(start_date,end_date,unit) où start_date représente la date de début.

L'héritage et le polymorphisme affectent le couplage des classes : l'héritage augmente le couplage car la classe dérivée dépend de la classe de base. Le polymorphisme réduit le couplage car les objets peuvent répondre aux messages de manière cohérente via des fonctions virtuelles et des pointeurs de classe de base. Les meilleures pratiques incluent l'utilisation de l'héritage avec parcimonie, la définition d'interfaces publiques, l'évitement de l'ajout de données membres aux classes de base et le découplage des classes via l'injection de dépendances. Un exemple pratique montrant comment utiliser le polymorphisme et l'injection de dépendances pour réduire le couplage dans une application de compte bancaire.

La fonction ISNULL() dans MySQL est une fonction utilisée pour déterminer si une expression ou une colonne spécifiée est NULL. Il renvoie une valeur booléenne, 1 si l'expression est NULL, 0 sinon. La fonction ISNULL() peut être utilisée dans l'instruction SELECT ou pour un jugement conditionnel dans la clause WHERE. 1. La syntaxe de base de la fonction ISNULL() : ISNULL(expression) où expression est l'expression permettant de déterminer si elle est NULL ou

Conseils de débogage des erreurs d’héritage : assurez-vous que les relations d’héritage sont correctes. Utilisez le débogueur pour parcourir le code et examiner les valeurs des variables. Assurez-vous d'utiliser correctement le modificateur virtuel. Examinez le problème des diamants d'héritage causé par l'héritage caché. Recherchez les fonctions virtuelles pures non implémentées dans les classes abstraites.

Utilisation de Transform en CSS La propriété Transform de CSS est un outil très puissant qui peut effectuer des opérations telles que la traduction, la rotation, la mise à l'échelle et l'inclinaison des éléments HTML. Cela peut changer radicalement l’apparence des éléments et rendre les pages Web plus créatives et dynamiques. Dans cet article, nous présenterons en détail les différentes utilisations de Transform et fournirons des exemples de code spécifiques. 1. Traduire (Traduire) Traduire fait référence au déplacement d'un élément sur une distance spécifiée le long de l'axe x et de l'axe y. Sa syntaxe est la suivante : tran

L'héritage de fonctions C++ ne doit pas être utilisé dans les situations suivantes : Lorsqu'une classe dérivée nécessite une implémentation différente, une nouvelle fonction avec une implémentation différente doit être créée. Lorsqu'une classe dérivée ne nécessite pas de fonction, elle doit être déclarée comme une classe vide ou utiliser des fonctions membres de la classe de base privées et non implémentées pour désactiver l'héritage des fonctions. Lorsque les fonctions ne nécessitent pas d'héritage, d'autres mécanismes (tels que des modèles) doivent être utilisés pour réaliser la réutilisation du code.

Explication détaillée de l'héritage de fonction C++ : Maîtriser la relation entre "is-a" et "has-a" Qu'est-ce que l'héritage de fonction ? L'héritage de fonction est une technique en C++ qui associe des méthodes définies dans une classe dérivée à des méthodes définies dans une classe de base. Il permet aux classes dérivées d'accéder et de remplacer les méthodes de la classe de base, étendant ainsi les fonctionnalités de la classe de base. Relations « est-un » et « a-un » Dans l'héritage de fonctions, la relation « est-un » signifie que la classe dérivée est un sous-type de la classe de base, c'est-à-dire que la classe dérivée « hérite » des caractéristiques et du comportement de la classe de base. La relation « possède un » signifie que la classe dérivée contient une référence ou un pointeur vers l'objet de classe de base, c'est-à-dire que la classe dérivée « possède » l'objet de classe de base. SyntaxeVoici la syntaxe permettant d'implémenter l'héritage de fonction : classDerivedClass:pu
