Informations sur les classes JavaScript


Introduction

JavaScript est une langue basée sur le prototypage et chaque objet a une propriété cachée interne appelée qui peut être utilisé pour étendre les propriétés et les méthodes d’objets. Vous pouvez obtenir plus d’informations sur les prototypes de nos informations de didacticiel sur les prototypes et l’héritage en JavaScript.

Jusqu’à récemment, les efforts ont utilisé des fonctions de construction pour imiter un modèle de conception orienté vers des objets en JavaScript. La spécification de langue ECMAScript 2015, souvent appelée ES6, a introduit des cours de langue javascript. Les classes JavaScript ne proposent pas vraiment de fonctionnalités supplémentaires et se décrivent souvent comme des éléments fournissant un «sucre syntaxique» par rapport aux prototypes et au héritage, car ils offrent une syntaxe plus propre et plus propre. Étant donné que d’autres langages de programmation utilisent des classes, la syntaxe de la classe JavaScript permet aux développeurs d’alterner des langues plus directement directement.

Les classes sont des fonctions

une classe JavaScript est un type de fonction. Les classes sont déclarées avec le mot-clé class. Nous utiliserons la syntaxe d’expression de fonction pour initialiser une syntaxe d’expression de fonction et une classe d’initialisation d’une classe.

// Initializing a function with a function expressionconst x = function() {}

Nous pouvons accéder à d’un objet à l’aide de la méthode . Nous allons utiliser cela pour tester la fonction vide que nous créons.

Object.getPrototypeOf(x);
<80f1e004e6 ">

Nous pouvons également utiliser cette méthode la classe que nous venons de créer.

Object.getPrototypeOf(y);
Output
ƒ () { }

le code déclaré avec function et class affiche une fonction . Avec des prototypes, toute fonction peut être convertie en une instance de constructeur moyen le mot-clé new

<

<

<78d99ef65d ">

Ceci s’applique également aux classes.

const y = class {}// Initialize a constructor from a classconst constructorFromClass = new y();console.log(constructorFromClass);
Output
y {}constructor: class

Ces exemples de Prototype des constructeurs, sinon, ils sont vides. Cependant, nous pouvons voir que, sous la syntaxe, les deux méthodes atteignent le même résultat final.

Définir une classe

dans le tutoriel de prototype et l’héritage, nous préparons un exemple basé sur la création de caractères. dans un jeu de rôles basé sur des textes. Nous continuerons avec cet exemple ici pour mettre à jour la syntaxe des fonctions aux classes.

Une fonction de constructeur est initialisée avec plusieurs paramètres qui seraient attribués sous forme de propriétés de this , en allusion à la fonction elle-même. La première lettre de l’identifiant serait majuscule par convention.

constructor.js
// Initializing a constructor functionfunction Hero(name, level) { this.name = name; this.level = level;}

Lorsque nous traduisons cette syntaxe de classe, qui est montré alors, nous voyons que sa structure est assez similaire.

class.js
// Initializing a class definitionclass Hero { constructor(name, level) { this.name = name; this.level = level; }}

Nous savons qu’une fonction de constructeur est conçue Pour être un schéma d’objet pour l’utilisation de majuscules dans la première lettre de l’initialiszer (facultatif) et par la familiarité avec la syntaxe. Le mot clé class communique de manière plus directe l’objectif de notre fonction.

La seule différence de syntaxe d’initialisation a à voir avec l’utilisation du mot clé class au lieu de function, et avec l’affectation des propriétés dans une méthode constructor().

Définir des méthodes

La pratique courante avec les fonctions de construction consiste à attribuer des méthodes directement à prototype au lieu de l’initialisation, comme on peut le voir dans l’ID

ci-dessous.

constructeur.js
function Hero(name, level) { this.name = name; this.level = level;}// Adding a method to the constructorHero.prototype.greet = function() { return `${this.name} says hello.`;}

avec des classes, cette syntaxe est simplifiée et la La méthode peut être ajoutée directement aux classes. Lors de l’utilisation de la définition de méthode de la méthode introduite dans ES6, une concision encore plus grande est obtenue lors de la définition d’une méthode.

classe.js
class Hero { constructor(name, level) { this.name = name; this.level = level; } // Adding a method to the constructor greet() { return `${this.name} says hello.`; }}

Observons ces propriétés et méthodes d’action. Nous allons créer une nouvelle instance de Hero à l’aide du mot-clé new et attribuer certaines valeurs.

Si nous imprimons plus d’informations sur notre nouvel objet avec , nous pouvons apprécier plus de détails sur ce qui se passe avec l’initialisation de la classe.

Output
Hero {name: "Varg", level: 1}__proto__: ▶ constructor: class Hero ▶ greet: ƒ greet()

Nous pouvons voir dans le résultat que les fonctions constructor() et greet() ils ont appliqué à __proto__ ou de hero1, et pas directement comme Une méthode dans l’objet hero1. Bien que cela soit révélé dans la création de fonctions de constructeur, il n’est pas évident lors de la création de cours. Les classes permettent une syntaxe plus simple et plus succincte, bien qu’elles sacrifient une certaine clarté dans le processus.

Développer une classe

Une caractéristique avantageuse des fonctions et des classes de construction est qu’elles peuvent être étendues à de nouveaux schémas d’objets basés sur l’élément principal. Cela empêche la répétition du code d’objets similaires, mais ils ont besoin de fonctionnalités supplémentaires ou plus spécifiques.

Vous pouvez créer de nouvelles fonctions de construction à partir de l’élément principal à l’aide de la méthode call(). Dans l’exemple suivant, nous créerons une classe de caractères plus spécifique appelée Mage et nous allons vous attribuer les propriétés de Hero en utilisant call(), en plus de l’ajout d’une propriété.

constructeur.js
// Creating a new constructor from the parentfunction Mage(name, level, spell) { // Chain constructor with call Hero.call(this, name, level); this.spell = spell;}

à ce stade, Nous pouvons créer une nouvelle instance de Mage en utilisant les mêmes propriétés de Hero, ainsi qu’un nouveau que nous ajoutons.

en envoyant hero2 à la console, nous pouvons comprendre que nous créons une nouvelle classe Mage basé sur le constructora.

Output
Mage {name: "Lejon", level: 2, spell: "Magic Missile"}__proto__: ▶ constructor: ƒ Mage(name, level, spell)

avec des classes ES6, le mot-clé est utilisé à la place. de call pour accéder aux fonctions principales. Nous allons utiliser extends pour faire référence à la classe principale.

classe.js
// Creating a new class from the parentclass Mage extends Hero { constructor(name, level, spell) { // Chain constructor with super super(name, level); // Add a new property this.spell = spell; }}

Maintenant, nous pouvons créer une nouvelle instance de Mage de la même manière.

Nous allons primer hero2 sur la console et nous verrons le résultat.

Output
Mage {name: "Lejon", level: 2, spell: "Magic Missile"}__proto__: Hero ▶ constructor: class Mage

Le résultat est presque exactement le même, avec la différence que dans la construction de la classe est liée à l’élément principal; Dans ce cas, Hero.

ci-dessous est une comparaison parallèle de l’ensemble du processus d’initialisation, de l’incorporation de méthodes et de l’héritage d’une fonction de constructeur et d’une classe.

constructeur.js
function Hero(name, level) { this.name = name; this.level = level;}// Adding a method to the constructorHero.prototype.greet = function() { return `${this.name} says hello.`;}// Creating a new constructor from the parentfunction Mage(name, level, spell) { // Chain constructor with call Hero.call(this, name, level); this.spell = spell;}
class.js
« c2e3b20d13″>

Bien que La syntaxe est assez différente, le résultat sous-jacent est presque le même pour les deux méthodes. Les classes nous offrent une alternative plus concise pour créer des schémas d’objets et les fonctions de constructeur décrivent plus précisément ce qui se passe à l’arrière-plan.

Conclusion

Dans ce tutoriel, il a incorporé des connaissances sur les similitudes et Différences entre les fonctions de constructeur de JavaScript et les classes ES6. Les classes et les fonctions de construction imitent un modèle d’héritage orienté objet pour JavaScript, qui est un langage patrimonial basé sur des prototypes.

Comprendre le patrimoine prototypique est primordial pour fonctionner efficacement comme développeur JavaScript. Familiarisez-vous avec des cours est extrêmement utile, car dans les bibliothèques JavaScript populaires que la syntaxe est souvent utilisée class.

.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *