Utilisation de statique dans les classes JavaScript ES6

Dans cet article, nous saurons travailler avec les membres de la classe dans les classes ES6, la version récente de JavaScript Standard. Nous apprendrons également à créer des méthodes et des propriétés statiques, bien que vous puissiez voir cela pour le cas des propriétés, nous devrons avoir sans valeur d’un tripe supplémentaire.

Ce n’est pas notre objectif d’introduire Le concept de statique, car il s’agit d’une raison d’étudier en détail dans les articles précédents comme des explications de méthodes et d’attributs statiques. Cependant, nous dirons que les membres statiques des classes dans la programmation orientée objet sont des attributs et des méthodes qui dépendent directement d’une classe, en fonction d’un objet particulier. Lorsqu’il dépend de la classe, ils ne sont pas associés à un objet. Ils partagent donc la valeur de la classe entière, quelles que soient les instances créées.

Nous avons déjà commenté qu’avec le récent Version de JavaScript ES6 Nous avons maintenant des cours, bien qu’ils ne soient pas exactement les mêmes que dans d’autres langues plus traditionnelles. Dans le cas de statique, il n’existe aucun changement dans le concept, mais en ne pouvant pas déclarer les attributs d’instance, nous ne pouvons pas déclarer des attributs statiques. Nous le verrons calmement, bien que avant de commencer avec les méthodes statiques.

Définir les méthodes statiques dans ES6

Une méthode statique est construite simplement en indiquant le mot « statique » avant le nom de la méthode créée. Le reste de la définition d’une méthode statique serait identique à la définition d’une méthode conventionnelle, à l’exception de la variable « ceci » comme généralement dans les méthodes.

dans l’exemple suivant que nous avons une classe appelée « Summario » qui a une méthode déclarée statique, d’ajouter les valeurs d’un tableau.

class Sumatorio { static sumarArray(arrayValores) { let suma = 0; for(let valor of arrayValores){ suma += valor } return suma; }}

La méthode statique dépend directement de la classe. , afin que nous utilisions votre propre classe pour l’invoquer.

let suma = Sumatorio.sumarArray(); //suma valdrá 12
Remarque: le fait de ne pas pouvoir avoir « ceci » dans une méthode statique est Parce que la méthode ne peut être invoquée par rapport à aucun objet. Comme vous l’avez vu, nous utilisons le nom de la classe pour l’invoquer et non un objet instantané. Comme vous le savez, « Ceci » a une référence à l’objet où un message a été lancé (l’objet sur lequel une méthode a été invoquée). En tant que tel objet d’invocation, il n’y a pas d’objet dans « Ceci ». En principe, nous pourrions penser que « cela » sera alors « indéfini », mais quel est le code de la classe elle-même.

méthodes statiques peut servir de nombreuses choses. C’est la raison pour laquelle ils sont parfois utilisés comme un tiroir de désastre d’utilitaires pouvant avoir à voir avec une classe. En pensant à des objets, vous devez faire attention à quoi et comment ils sont utilisés. L’exemple passé de Sumararray () n’était pas très bon de la philosophie de l’orientation des objets, mais dans l’exemple suivant, nous avons une méthode statique un peu mieux pensée.

Nous avons une date de date qui nous sert à créer Dates en JavaScript. Il est vrai que Javascript contient déjà une classe donnée, mais il a la possibilité de créer des dates et des horaires et peut-être que nous avons seulement besoin de dates et que nous voulons une série d’utilitaires supplémentaires qui ne sont pas inclus dans l’interface de date d’origine.

Dans notre exemple, vous observerez que nous avons un constructeur qui reçoit la journée, le mois et l’année. Cependant, dans la pratique, plusieurs fois les dates sont créées avec la journée en cours. Comme la surcharge de méthodes de JavaScript n’existe pas et que nous ne pouvons donc pas surcharger des constructeurs, nous pourrions distribuer des méthodes statiques pour créer une espèce du constructeur de date sans paramètres qui renvoie une date d’objet initialisée avec le jour actuel.

class Fecha { constructor(dia, mes, ano) { this.dia = dia; this.mes = mes; this.ano = ano; } static hoy() { var fecha = new Date(); var dia = fecha.getDate(); var mes = fecha.getMonth() + 1; var ano = fecha.getFullYear(); return new Fecha(dia, mes, ano); }}

Comme vous pouvez le constater, la méthode statique d’aujourd’hui () est responsable de l’obtention des valeurs actuelles, du mois et de l’année et d’invoquer le constructeur avec de telles données, renvoyant la Objet qui vient d’être créé.

Un autre exemple de méthode statique ou de méthode de classe

Nous continuons avec un deuxième exemple de méthode statique ou de méthode de classe. Nous le trouvons maintenant dans le cadre d’une classe de coordonnées,

class Coordenada { constructor(x, y) { this.x = x; this.y = y; } static coordenadaOrigen() { return new Coordenada(0,0); }}

dans le code précédent, vous avez un exemple de méthode statique, appelé coordinatedorigen (), qui retourne Une nouvelle instance d’un objet de la classe de coordonnées, avec ses Blancs Xey égal à zéro.

C’est une méthode de classe, nous devrons donc utiliser la classe elle-même pour y accéder.

var origen = Coordenada.coordenadaOrigen();

Attributs statiques de ECMAScript 2015

La définition des propriétés statiques ou des propriétés de la classe, n’est pas aussi directe que la définition des méthodes statiques, puisque dans ES6, vous pouvez Ne définissez pas les propriétés comme faites dans d’autres langages de programmation plus traditionnels.

dans ECMAScript 2015 (ES6) Nous avons la limitation de ne pas pouvoir déclarer les attributs de la classe (nous devons les générer dans le constructeur ou dans les méthodes). Cela s’étend également aux attributs de classe ou aux attributs statiques. Cependant, vous pouvez toujours assembler un mécanisme pour y parvenir.

Par exemple, dans le cas d’avoir des attributs de classe statique qui ont des valeurs communes à toute la classe, nous pourrions utiliser le getter, en plaçant la Mot statique lors de la définition de la méthode d’obtention.

Nous pouvons accéder à « PI » comme s’il s’agissait d’une propriété statique, dépend directement de la classe. Nous l’utilisons directement à partir du nom de la classe:

console.log(Circulo.pi);

Si ce que nous voulons, c’est une variable statique, qui est globale pour la classe entière, avec une valeur que cela ne dépend pas des cas et cela peut varier avec le temps, nous pourrions faire quelque chose comme ceci:

class Test {} Test.variableStatic = 'Algo que guardo en la clase';

Comme JavaScript est tellement permissive, nous pouvons associer une propriété à la classe attribuant simplement une valeur. Je n’aime pas trop l’exemple, car la définition de la propriété statique serait en dehors du code de la classe elle-même et donc dans une lecture à ce code, nous ne pouvions pas réaliser que cette variable statique est créée ultérieurement.

Dans l’exemple typique de la création d’une variable statique qui porte le compte des instances créées à partir d’une classe, nous pourrions opter pour quelque chose comme celui-ci (ce que j’aime plus pour avoir la création d’une propriété statique dans le constructeur).

class Habitante { constructor(nombre) { this.nombre = nombre; if(Habitante.contador) { Habitante.contador++; } else { Habitante.contador = 1; } }}

Le problème ici est que seule cette propriété statique existe à partir de la première instanciation d’un objet. Donc, un autre exemple qu’un peu plus convolué pourrait être le prochain, ce qui utilise le getter et la sécheuse des objets JavaScript.

class Habitante { static get contador() { if(Habitante.contadorPrivado) { return Habitante.contadorPrivado; } return 0; } static set contador(valor) { Habitante.contadorPrivado = valor; } constructor(nombre) { this.nombre = nombre; if(Habitante.contador) { Habitante.contador++; } else { Habitante.contador = 1; } } }

Comment pouvez-vous voir, Inhabitant.Contact est notre propriété statique, qui serait disponible grâce au getter et au Setter comme s’il s’agissait d’un attribut normal (seulement qu’il est statique car il est prévu de « statique »).

Le constructeur que nous utilisons de l’habitant.Contact comme s’il s’agissait d’un attribut normal, mais uniquement en interne dans la mise en œuvre de la classe, ces propriétés sont en fait calculées avec des fonctions d’obtention et de réglage.

est un seul code expérimental. , mais cela peut donner une idée des choses qui peuvent être faites en JavaScript lorsque « Vous avez retourné » une petite langue. En savoir plus sur Obtenir et définit cet article.

Conclusion sur les membres de la classe en ES6

Nous avons appris des choses intéressantes sur la création de membres de la classe ou des membres statiques, dans les classes ES6. Comme vous l’avez pu voir, il y a des particularités données par la langue javascript, qui est importante à savoir.

Dans l’article suivant du manuel ES6, nous continuerons à parler de classes, à traiter quelque chose d’aussi important. comme l’héritage des classes dans JavaScript.

Laisser un commentaire

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