Objets
Définition
Lorsqu'on parle d'objets dans la plupart des langages de programmation, on pense immédiatement aux classes. Au fait qu'un objet est une instance d'une classe. Aux méthodes et aux attributs qui sont associés aux classes... En Javascript, les objets sont un peu différents.
En Javascript, un objet est simplement un ensemble de variables. Ces variables sont appelées des "propriétés" ou des "clés". Chaque propriété est associée à une valeur. Cette valeur peut être de n'importe quel type: un nombre, une chaîne de caractères, un tableau, un autre objet et même une fonction. Celà nous permet de stocker des données et des comportements de manière très flexible. Voici un exemple d'objet:
Pour créer un objet, on utilise les accolades {}. À l'intérieur des accolades, on définit les propriétés de l'objet en les séparant par des virgules. Chaque propriété est définie avec une clé et une valeur, séparées par un deux-points. Dans l'exemple ci-dessus, on a défini un objet musique avec 5 propriétés: titre, artiste, annee, duree et jouer. La dernière propriété est une fonction, ce qui est tout à fait possible en Javascript.
Accéder aux propriétés
Pour accéder à une propriété d'un objet, on utilise la notation du point .. Si l'on reprends l'exemple de l'objet musique ci-dessus, on peut accéder à la propriété titre en écrivant musique.titre. On peut aussi accéder à une propriété en utilisant la notation des crochets []. Dans ce cas, on écrit musique["titre"]. Les deux notations sont équivalentes, mais la notation du point est plus courante puisqu'elle est plus courte. On peut aussi modifier la valeur d'une propriété en utilisant les mêmes notation:
Si vous voulez plutôt exécuter une fonction contenue dans un objet, le code est très similaire. Vous utilisez la notation du point pour accéder à la fonction, puis vous ajoutez les parenthèses pour l'exécuter. Voici un exemple:
Objets imbriqués
Les objets peuvent contenir d'autres objets. Cela nous permet de créer des structures de données complexes et hiérarchiques. Par exemple, on pourrait avoir un objet album qui contient un tableau de chansons, qui sont elles-mêmes des objets. Voici un exemple:
Les objets imbriqués sont très utiles pour organiser des données complexes. Ils nous permettent de garder des données qui sont liées ensemble dans un seul endroit. Cela rend notre code plus lisible et plus facile à maintenir.
Publique, privée et encapsulation
En Javascript, il n'y a pas de notion de visibilité des propriétés. Toutes les propriétés d'un objet sont publiques, c'est-à-dire qu'elles sont accessibles de l'extérieur de l'objet. Cela signifie que n'importe qui peut lire ou modifier les propriétés d'un objet. Cela peut être très utile, mais aussi problématique si on travaille en équipe avec des personnes qui ne font pas attention au code ou qui sont de mauvais programmeurs.
Pour pallier à ce problème, on peut utiliser des conventions de nommage pour indiquer que certaines propriétés sont privées. Plusieurs programmeurs préfixe encore les noms des propriétés privées avec un underscore _. Cela indique aux autres programmeurs que ces propriétés ne doivent pas être modifiées directement. Cela ne protège pas vraiment les propriétés, mais cela indique clairement l'intention du programmeur.
Autrement, les modules Javascript permettent de créer des variables privées. Le concept de module sera abordé dans une autre page.