Maison interface Web Questions et réponses frontales Quelle est la différence entre l'héritage es6 et l'héritage es5 ?

Quelle est la différence entre l'héritage es6 et l'héritage es5 ?

Sep 03, 2021 pm 04:08 PM
es5 es6 继承

La différence entre l'héritage es5 et es6 : l'héritage ES5 est implémenté via le mécanisme de prototype ou de constructeur ; il crée d'abord une sous-classe, puis instancie la classe parent et l'ajoute à la sous-classe. ES6 crée d'abord la classe parent, puis accède à la classe parent en appelant la super méthode dans le sous-ensemble instancié, puis implémente l'héritage en le modifiant.

Quelle est la différence entre l'héritage es6 et l'héritage es5 ?

L'environnement d'exploitation de ce tutoriel : système Windows 7, version ECMAScript 5&&ECMAScript 6, ordinateur Dell G3.

La différence entre l'héritage es6 et l'héritage es5

  • L'héritage ES5 crée essentiellement un objet instance de la sous-classe, puis y ajoute la méthode de la classe parent (Parent.apply(this)).

  • Le mécanisme d'héritage d'ES6 est complètement différent. Essentiellement, l'objet instance this de la classe parent est d'abord créé (donc la méthode super() de la classe parent doit être appelée en premier), puis celle-ci est modifiée à l'aide du constructeur de la sous-classe.

  • L'héritage dans ES5 est implémenté via le mécanisme de prototype ou de constructeur.

  • ES6 définit les classes via le mot-clé class, qui contient des constructeurs, et l'héritage entre les classes est obtenu via le mot-clé extends. Les sous-classes doivent appeler la super méthode dans la méthode constructeur, sinon une erreur sera signalée lors de la création d'une nouvelle instance. Parce que la sous-classe n'a pas son propre objet this, mais hérite de l'objet this de la classe parent et le traite ensuite. Si la super méthode n’est pas appelée, la sous-classe ne peut pas obtenir l’objet this.

Notez que le mot-clé super fait référence à l'instance de la classe parent, c'est-à-dire à l'objet this de la classe parent.

Remarque : dans le constructeur de sous-classe, le mot-clé this ne peut être utilisé qu'après avoir appelé super, sinon une erreur sera signalée.

1. Héritage dans es5 :

	function parent(a,b){
	    this a = a;
	    this b = b;
	}
	function child(c){
	    this c = c
	};
Copier après la connexion

Héritage du parent via des sous-ensembles :

parent.call(child,1,2)
Copier après la connexion

En regardant la méthode d'appel sous-jacente, nous pouvons voir que le processus d'héritage se fait via l'attribut prototype

child.prototype = new parent(1,2);
Copier après la connexion

À partir de là, ES5 Le L'essence de l'héritage est de créer d'abord un objet d'instance de l'élément de sous-classe enfant, puis d'attribuer les attributs de l'objet prototype de l'élément de classe parent parent à l'objet d'instance de l'élément de sous-classe enfant, réalisant ainsi l'héritage

2, ES6 Héritage

Dans JS traditionnel, générer des objets consiste à créer un constructeur, puis à définir l'objet généré

function parent(a,b){
    this.a = a;
    this.b = b;
}
Copier après la connexion

, puis à ajouter les méthodes ou attributs requis correspondants via prototype

parent.prototype.methods = function(){
    return 'this is test methods';
}
parent.prototype.attr = 'this is test attr‘;
Copier après la connexion

. Cependant, ES6 a introduit le concept de classe, c'est-à-dire la classe. Les objets sont définis via la classe de mots-clés.

class est un mot-clé, Language Sugar, afin que vous puissiez comprendre plus clairement l'objet créé.

Les paramètres transmis par la méthode de contrôle sont reçus via le constructeur d'attribut. Si vous n'écrivez pas cet attribut, il n'y en aura pas. paramètres par défaut

class parent{
    curstructor(a,b){
        this.a = a;
        this.b = b;
    }
}
Copier après la connexion

L'héritage dans ES6 est basé sur l'héritage entre les classes. Ceci est réalisé grâce au mot-clé extends.

Appelez la classe parent via une super instanciation

	class parent{
	  constructor(a,b){
	    this.a = a;
	    this.b = b;
	  }
	  parentMethods(){
	    return this.a + this.b
	  }
	}
	class child extends parent{
	  constructor(a,b,c){
	    super(a,b);
	    this.c = c;
	  }
	  childMethods(){
	    return this.c + ',' + super.parentMethods()
	  }
	}
	const point = new child(1,2,3);
	alert(point.childMethods());
Copier après la connexion

Le code ci-dessus est un simple ensemble d'héritage de classe parent-enfant ES6.

Je pense que vous l'avez vu, même si la différence évidente est que dans ES6, c'est la super méthode qui active le composant parent, plutôt que de créer une nouvelle instanciation. En d'autres termes, l'objet instance de la classe parent est créé en premier. , puis appelé. Pour modifier cela dans le constructeur de la sous-classe pour compléter l'objet prototype.

Résumé :

La plus grande différence entre l'héritage ES5 et ES6 est que :

  • ES5 crée d'abord la sous-classe, puis instancie la classe parent et l'ajoute à la sous-classe.

  • ES6 crée la classe parent Tout d'abord, après avoir accédé au parent en appelant la super méthode dans le sous-ensemble instancié, l'héritage est réalisé en modifiant ceci

[Apprentissage recommandé :

Tutoriel vidéo javascript]

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!

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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Explication détaillée de l'héritage des fonctions C++ : Comment utiliser le « pointeur de classe de base » et le « pointeur de classe dérivé » dans l'héritage ? Explication détaillée de l'héritage des fonctions C++ : Comment utiliser le « pointeur de classe de base » et le « pointeur de classe dérivé » dans l'héritage ? May 01, 2024 pm 10:27 PM

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.

Résoudre l'erreur PHP : problèmes rencontrés lors de l'héritage de la classe parent Résoudre l'erreur PHP : problèmes rencontrés lors de l'héritage de la classe parent Aug 17, 2023 pm 01:33 PM

Résolution des erreurs PHP : problèmes rencontrés lors de l'héritage des classes parentes En PHP, l'héritage est une fonctionnalité importante de la programmation orientée objet. Grâce à l'héritage, nous pouvons réutiliser le code existant, l'étendre et l'améliorer sans modifier le code d'origine. Bien que l'héritage soit largement utilisé dans le développement, vous pouvez parfois rencontrer des problèmes d'erreur lors de l'héritage d'une classe parent. Cet article se concentrera sur la résolution des problèmes courants rencontrés lors de l'héritage d'une classe parent et fournira des exemples de code correspondants. Question 1 : la classe parent est introuvable pendant le processus d'héritage de la classe parent, si le système ne le fait pas.

Explication détaillée de l'héritage des fonctions C++ : Comment déboguer les erreurs d'héritage ? Explication détaillée de l'héritage des fonctions C++ : Comment déboguer les erreurs d'héritage ? May 02, 2024 am 09:54 AM

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.

Explication détaillée de l'héritage des fonctions C++ : Comment comprendre la relation « est-un » et « a-un » dans l'héritage ? Explication détaillée de l'héritage des fonctions C++ : Comment comprendre la relation « est-un » et « a-un » dans l'héritage ? May 02, 2024 am 08:18 AM

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

Calculer les intérêts sur les dépôts à terme (FD) et les dépôts à terme (RD) à l'aide du programme Java hérité Calculer les intérêts sur les dépôts à terme (FD) et les dépôts à terme (RD) à l'aide du programme Java hérité Aug 20, 2023 pm 10:49 PM

L'héritage est un concept qui nous permet d'accéder aux propriétés et au comportement d'une classe à partir d'une autre classe. La classe qui hérite des méthodes et des variables membres est appelée une superclasse ou classe parent, et la classe qui hérite de ces méthodes et variables membres est appelée une sous-classe ou une sous-classe. En Java, nous utilisons le mot-clé "extends" pour hériter d'une classe. Dans cet article, nous discuterons d'un programme Java permettant de calculer les intérêts sur les dépôts à terme et les dépôts à terme en utilisant l'héritage. Tout d'abord, créez ces quatre fichiers Java - Acnt.java - dans l'IDE de votre machine locale. Ce fichier contiendra une classe abstraite « Acnt » qui est utilisée pour stocker les détails du compte tels que le taux d'intérêt et le montant. Il aura également une méthode abstraite 'calcIntrst' avec le paramètre 'amnt' pour calculer

Comment l'héritage et le polymorphisme affectent-ils le couplage de classes en C++ ? Comment l'héritage et le polymorphisme affectent-ils le couplage de classes en C++ ? Jun 05, 2024 pm 02:33 PM

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.

Comment utiliser le polymorphisme et l'héritage en PHP pour gérer les types de données Comment utiliser le polymorphisme et l'héritage en PHP pour gérer les types de données Jul 15, 2023 pm 07:41 PM

Comment utiliser le polymorphisme et l'héritage pour gérer les types de données en PHP Introduction : En PHP, le polymorphisme et l'héritage sont deux concepts importants de programmation orientée objet (POO). En utilisant le polymorphisme et l'héritage, nous pouvons gérer différents types de données de manière plus flexible. Cet article présentera comment utiliser le polymorphisme et l'héritage pour gérer les types de données en PHP et montrera leur application pratique à travers des exemples de code. 1. Le concept de base de l'héritage L'héritage est un concept important dans la programmation orientée objet. Il nous permet de créer une classe pouvant hériter des propriétés et des méthodes de la classe parent.

Comment forcer l'héritage de la classe finale du proxy en utilisant Java ? Comment forcer l'héritage de la classe finale du proxy en utilisant Java ? Sep 06, 2023 pm 01:27 PM

Comment forcer l’héritage de la classe finale du proxy en utilisant Java ? En Java, le mot-clé final est utilisé pour modifier les classes, les méthodes et les variables, indiquant qu'elles ne peuvent pas être héritées, remplacées ou modifiées. Cependant, dans certains cas, nous pouvons avoir besoin de forcer l’héritage d’une classe finale pour répondre à des besoins spécifiques. Cet article explique comment utiliser le modèle de proxy pour implémenter une telle fonctionnalité. Le modèle proxy est un modèle de conception structurelle qui nous permet de créer un objet intermédiaire (objet proxy) capable de contrôler le comportement d'un autre objet (objet proxy).

See all articles