Accès aux variables d'objet en JavaScript : this.var ou pas ?
Dans le modèle de programmation orienté objet de JavaScript, il est courant de se demander si chaque La variable dans un objet nécessite le mot-clé this.
this.var vs. Local Variables
Contrairement au modèle basé sur les classes de C, JavaScript utilise l'héritage prototypique. Dans l'héritage prototypique, tout est un objet et les objets peuvent hériter d'autres objets.
En JavaScript, une fonction constructeur, invoquée avec le mot-clé new, crée de nouveaux objets et leur attribue des propriétés. Le mot-clé this au sein d'un constructeur fait référence à l'objet nouvellement créé.
Les méthodes, accessibles via le mot-clé this, sont des fonctions appelées sur des objets. Cependant, les variables locales déclarées dans la portée d'une méthode ne sont pas directement accessibles par ceci.
Exemple :
function Foo() { this.bar = 0; this.getBar = function() { return this.bar; }; }
Dans cet exemple, this.bar fait référence à la barre propriété de l’instance Foo. Cependant, bar à l'intérieur de la méthode getBar fait référence à une variable locale qui n'est pas définie par défaut. Pour accéder à la propriété, vous devez utiliser this.bar.
Attributs privés via des fermetures
Pour créer des attributs privés, JavaScript s'appuie sur des fermetures. Les fonctions définies dans la portée d'un constructeur ont accès aux variables locales de ce constructeur. Ainsi, en créant des fonctions au sein d'un constructeur et en les exposant comme méthodes privilégiées, vous pouvez conserver des attributs privés.
Exemple :
function Foo() { var bar = "foo"; this.getBar = function() { return bar; }; }
Dans cet exemple, bar est une variable locale du constructeur Foo. La méthode getBar est une méthode privilégiée qui a accès à bar.
Méthodes prototypes et méthodes privilégiées
Les méthodes définies sur l'objet prototype sont héritées par toutes les instances. Cependant, ils n'ont pas accès aux méthodes privilégiées sauf si le prototype enfant hérite du prototype parent.
En résumé, bien que this.var soit requis pour accéder aux propriétés des objets depuis les méthodes, il n'est pas indispensable pour les variables locales. . Les méthodes privilégiées, définies comme des fermetures au sein du constructeur, fournissent un mécanisme de création d'attributs privés dans le modèle de programmation orienté objet de JavaScript.
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!