Variables statiques en JavaScript
Dans la programmation orientée objet, les variables statiques sont associées à une classe plutôt qu'à ses instances. En JavaScript, qui suit un modèle d'héritage basé sur un prototype, le concept de variables statiques peut être réalisé grâce à diverses approches.
Approche des fonctions de constructeur :
Avant l'introduction des classes ES6, JavaScript utilisait des fonctions de constructeur pour la création d'objets. Dans la fonction constructeur, vous pouvez définir des variables privées qui ne sont accessibles que dans la portée de cette fonction. Les variables et méthodes publiques, en revanche, peuvent être affectées à l'objet this de l'instance. De plus, vous pouvez ajouter des propriétés statiques à l'objet fonction constructeur lui-même, qui seront partagées par toutes les instances.
Considérez l'exemple suivant :
function MyClass() { var privateVariable = "foo"; this.publicVariable = "bar"; this.privilegedMethod = function() { alert(privateVariable); }; } // Instance method available to all instances (loaded once) MyClass.prototype.publicMethod = function() { alert(this.publicVariable); }; // Static property shared by all instances MyClass.staticProperty = "baz"; var myInstance = new MyClass();
Dans cet exemple, staticProperty est défini dans la fonction MyClass et est accessible à toutes les instances de MyClass.
Syntaxe de classe ES6 Approche :
ES6 a introduit le mot-clé class pour déclarer les classes. Avec les classes, vous pouvez définir des propriétés ou des méthodes statiques à l'aide du mot-clé static. Ces membres statiques sont accessibles via le nom de la classe lui-même.
Voici l'exemple précédent implémenté avec les classes ES6 :
class MyClass { constructor() { const privateVariable = "private value"; this.publicVariable = "public value"; this.privilegedMethod = function() { console.log(privateVariable); }; } publicMethod() { console.log(this.publicVariable); } static staticProperty = "static value"; static staticMethod() { console.log(this.staticProperty); } } var myInstance = new MyClass(); myInstance.publicMethod(); // "public value" myInstance.privilegedMethod(); // "private value" MyClass.staticMethod(); // "static value"
Les deux approches fournissent des moyens de créer des variables statiques en JavaScript. La syntaxe de classe ES6 offre une méthode plus propre et plus concise, tandis que l'approche de fonction constructeur offre plus de flexibilité pour accéder aux variables privées dans les méthodes d'instance.
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!