Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Propriétés Statiques | Classes
Maîtrise Avancée de JavaScript
course content

Contenu du cours

Maîtrise Avancée de JavaScript

Maîtrise Avancée de JavaScript

2. Manipulation du DOM
3. Événements et Gestion des Événements
4. JavaScript Asynchrone et APIs

book
Propriétés Statiques

En programmation, les propriétés statiques permettent à des informations partagées d'exister à travers toutes les instances d'une classe, ce qui les rend idéales pour des données cohérentes.

Qu'est-ce que les propriétés statiques ?

Les propriétés statiques appartiennent à la classe elle-même plutôt qu'à une instance particulière de la classe. Cela signifie que les propriétés statiques sont partagées entre toutes les instances et peuvent être accédées directement à partir de la classe sans avoir besoin d'instancier un objet. Elles sont souvent utilisées pour des fonctions utilitaires, des constantes ou des données qui doivent être partagées entre toutes les instances d'une classe.

Considérons une entreprise où chaque employé (une instance d'une classe) a ses propres informations personnelles (nom, poste), mais l'adresse de l'entreprise (une propriété statique) est la même pour tous les employés. L'adresse appartient à l'entreprise elle-même, pas à un employé individuel.

Comment déclarer et utiliser les propriétés statiques

Pour déclarer une propriété statique, utilisez le mot-clé static à l'intérieur de la classe. Les propriétés statiques ne peuvent être accédées qu'en utilisant le nom de la classe, pas à partir des instances de la classe.

1234567891011121314151617181920
class Company { static headquarters = '123 Main St'; // Static property constructor(name) { this.name = name; // Instance property } getCompanyInfo() { return `${this.name} is located at ${Company.headquarters}`; } } const google = new Company('Google'); console.log(google.getCompanyInfo()); // Output: Google is located at 123 Main St const amazon = new Company('Amazon'); console.log(amazon.getCompanyInfo()); // Output: Amazon is located at 123 Main St // Accessing the static property directly from the class console.log(Company.headquarters); // Output: 123 Main St
copy

Dans cet exemple, la propriété headquarters est partagée entre toutes les instances de la classe Company. Les instances Google et Amazon font référence à la même adresse de siège social. Les propriétés statiques sont accessibles directement en utilisant le nom de la classe (Company.headquarters), et non par le biais des instances de la classe.

Comment les propriétés statiques sont partagées entre toutes les instances d'une classe

Étant donné que les propriétés statiques sont attachées à la classe elle-même, elles ne sont pas copiées pour chaque instance. Toutes les instances de la classe se réfèrent à la même propriété statique, ce qui en fait un moyen efficace de stocker des données qui n'ont pas besoin de changer par instance.

Exemple : Compteur pour le Nombre d'Instances Créées

Disons que nous voulons suivre combien d'instances d'une classe ont été créées. Nous pouvons utiliser une propriété statique pour maintenir le compte des instances, et l'incrémenter chaque fois qu'une nouvelle instance est créée.

123456789101112131415161718192021222324
class User { static count = 0; // Static property to track the number of users constructor(name) { this.name = name; User.count++; // Increment static property every time a new user is created } getUserInfo() { return `${this.name} is user number ${User.count}`; } } const user1 = new User('John'); const user2 = new User('Jane'); const user3 = new User('Alice'); // Accessing the static property directly from the class console.log(User.count); // Output: 3 (number of users created) // Each instance can see the total count of users console.log(user1.getUserInfo()); // Output: John is user number 3 console.log(user2.getUserInfo()); // Output: Jane is user number 3 console.log(user3.getUserInfo()); // Output: Alice is user number 3
copy

Dans cet exemple, chaque fois qu'un nouvel utilisateur est créé, la propriété statique count est incrémentée. Toutes les instances de la classe User partagent la même valeur count, car elle appartient à la classe elle-même.

Avantages des Propriétés Statics

Étant donné que les propriétés statiques sont partagées entre les instances, il n'est pas nécessaire de dupliquer les données, ce qui rend le code plus propre et plus efficace. Elles sont particulièrement utiles pour stocker des informations identiques pour toutes les instances, comme les paramètres de configuration ou les constantes, aidant à maintenir la cohérence dans tout le code.

Exemple du Monde Réel : Configuration de l'Application

Dans un scénario réel, vous pourriez avoir un objet de configuration d'application qui stocke des paramètres partagés à travers l'application. Les propriétés statiques seraient un excellent choix pour de tels cas d'utilisation.

12345678910111213141516171819202122
class AppConfig { static appName = 'QuirkApp Solutions'; // Shared configuration setting static version = '1.3.14'; // Shared configuration setting constructor(user) { this.user = user; } getUserConfig() { return `${this.user} is using ${AppConfig.appName} version ${AppConfig.version}`; } } const user1 = new AppConfig('Alice'); const user2 = new AppConfig('Bob'); console.log(user1.getUserConfig()); // Output: Alice is using QuirkApp Solutions version 1.3.14 console.log(user2.getUserConfig()); // Output: Bob is using QuirkApp Solutions version 1.3.14 // Accessing static properties directly from the class console.log(AppConfig.appName); // Output: QuirkApp Solutions console.log(AppConfig.version); // Output: 1.3.14
copy

Dans cet exemple, le nom de l'application et la version sont partagés entre tous les utilisateurs de l'application. Les propriétés statiques appName et version appartiennent à la classe et ne sont pas répliquées pour chaque instance.

1. Qu'est-ce qu'une propriété statique ?

2. Comment accéder à une propriété statique ?

3. Dans le code suivant, quelle sera la sortie de console.log(User.count); ?

Qu'est-ce qu'une propriété statique ?

Qu'est-ce qu'une propriété statique ?

Sélectionnez la réponse correcte

Comment accéder à une propriété statique ?

Comment accéder à une propriété statique ?

Sélectionnez la réponse correcte

Dans le code suivant, quelle sera la sortie de `console.log(User.count);` ?

Dans le code suivant, quelle sera la sortie de console.log(User.count); ?

Sélectionnez la réponse correcte

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 1. Chapitre 11
We're sorry to hear that something went wrong. What happened?
some-alt