Exploration des Propriétés Statiques en JavaScript
En programmation, les propriétés statiques permettent à des informations partagées d’exister entre toutes les instances d’une classe, ce qui les rend idéales pour des données cohérentes.
Que sont 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 accessibles directement depuis la classe sans avoir besoin d’instancier un objet. Elles sont souvent utilisées pour des fonctions utilitaires, des constantes ou des données devant être partagées entre toutes les instances d’une classe.
Considérer une entreprise où chaque employé (une instance d’une classe) possède ses propres informations personnelles (nom, poste), mais où 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, et non à un employé individuel.
Comment déclarer et utiliser des propriétés statiques
Pour déclarer une propriété statique, utiliser le mot-clé static
à l’intérieur de la classe. Les propriétés statiques ne peuvent être accessibles qu’en utilisant le nom de la classe, et non à partir des instances de la classe.
1234567891011121314151617181920class 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
Dans cet exemple, la propriété headquarters
est partagée entre toutes les instances de la classe Company
. Les instances Google
et Amazon
font toutes deux référence à la même adresse du siège social. Les propriétés statiques sont accessibles directement en utilisant le nom de la classe (Company.headquarters
), et non via les 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 font référence à la même propriété statique, ce qui constitue un moyen efficace de stocker des données qui n'ont pas besoin d'être modifiées pour chaque instance.
Exemple : Compteur du nombre d'instances créées
Supposons que nous souhaitions suivre le nombre d'instances d'une classe qui ont été créées. Nous pouvons utiliser une propriété statique pour stocker le nombre d'instances et l'incrémenter à chaque création d'une nouvelle instance.
123456789101112131415161718192021222324class 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
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 de count
, car elle appartient à la classe elle-même.
Avantages des propriétés statiques
É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 clair et plus efficace. Elles sont particulièrement utiles pour stocker des informations identiques pour toutes les instances, telles que des paramètres de configuration ou des constantes, contribuant ainsi à maintenir la cohérence dans l'ensemble du code.
Exemple concret : Configuration d'une application
Dans un contexte réel, il est possible d'utiliser un objet de configuration d'application pour stocker des paramètres partagés à travers l'application. Les propriétés statiques constituent un choix pertinent pour ce type de cas d'utilisation.
12345678910111213141516171819202122class 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
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 dupliqué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);
?
Merci pour vos commentaires !
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion
Can you explain the difference between static and instance properties?
When should I use static properties instead of instance properties?
Are there any limitations or best practices for using static properties?
Awesome!
Completion rate improved to 2.22
Exploration des Propriétés Statiques en JavaScript
Glissez pour afficher le menu
En programmation, les propriétés statiques permettent à des informations partagées d’exister entre toutes les instances d’une classe, ce qui les rend idéales pour des données cohérentes.
Que sont 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 accessibles directement depuis la classe sans avoir besoin d’instancier un objet. Elles sont souvent utilisées pour des fonctions utilitaires, des constantes ou des données devant être partagées entre toutes les instances d’une classe.
Considérer une entreprise où chaque employé (une instance d’une classe) possède ses propres informations personnelles (nom, poste), mais où 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, et non à un employé individuel.
Comment déclarer et utiliser des propriétés statiques
Pour déclarer une propriété statique, utiliser le mot-clé static
à l’intérieur de la classe. Les propriétés statiques ne peuvent être accessibles qu’en utilisant le nom de la classe, et non à partir des instances de la classe.
1234567891011121314151617181920class 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
Dans cet exemple, la propriété headquarters
est partagée entre toutes les instances de la classe Company
. Les instances Google
et Amazon
font toutes deux référence à la même adresse du siège social. Les propriétés statiques sont accessibles directement en utilisant le nom de la classe (Company.headquarters
), et non via les 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 font référence à la même propriété statique, ce qui constitue un moyen efficace de stocker des données qui n'ont pas besoin d'être modifiées pour chaque instance.
Exemple : Compteur du nombre d'instances créées
Supposons que nous souhaitions suivre le nombre d'instances d'une classe qui ont été créées. Nous pouvons utiliser une propriété statique pour stocker le nombre d'instances et l'incrémenter à chaque création d'une nouvelle instance.
123456789101112131415161718192021222324class 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
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 de count
, car elle appartient à la classe elle-même.
Avantages des propriétés statiques
É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 clair et plus efficace. Elles sont particulièrement utiles pour stocker des informations identiques pour toutes les instances, telles que des paramètres de configuration ou des constantes, contribuant ainsi à maintenir la cohérence dans l'ensemble du code.
Exemple concret : Configuration d'une application
Dans un contexte réel, il est possible d'utiliser un objet de configuration d'application pour stocker des paramètres partagés à travers l'application. Les propriétés statiques constituent un choix pertinent pour ce type de cas d'utilisation.
12345678910111213141516171819202122class 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
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 dupliqué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);
?
Merci pour vos commentaires !