Création d’un objet JavaScript littéral et manipulation de ses membres

Un objet est un ensemble cohérent de propriétés et de méthodes. Le JavaScript dispose d’objets natifs (objets prédéfinis) qui possèdent des propriétés et des méthodes qu’on va pouvoir directement utiliser et nous permet également de définir nos propres objets.

Nous allons passer en revue certains objets natifs qu’il convient de connaitre dans les prochaines leçons. Avant tout, il est important de bien comprendre comment fonctionnent les objets et de savoir comment créer et manipuler un objet.

Nous pouvons créer des objets de 4 manières différentes en JavaScript. On va pouvoir :

  • Créer un objet littéral ;
  • Utiliser le constructeur Object() ;
  • Utiliser une fonction constructeur personnalisée ;
  • Utiliser la méthode create().

Ces différents moyens de procéder vont être utilisés dans des contextes différents, selon ce que l’on souhaite réaliser.

Dans cette leçon, nous allons commencer par créer un objet littéral et nous en servir pour expliquer en détail de quoi est composé un objet et comment manipuler ses membres. Nous verrons les autres techniques de création d’objet dans la leçon suivante.

 

Création d’un objet littéral

Dans la leçon précédente, nous avons créé un premier objet nommé utilisateur. Pour être tout à fait précis, nous avons créé un objet littéral :

Syntaxe de création d'un objet littéral en JavaScript

See the Pen
Cours JavaScript 5.2.1
by Pierre (@pierregiraud)
on CodePen.

On parle ici d’objet « littéral » car nous avons défini chacune de ses propriétés et de ses méthodes lors de la création, c’est-à-dire littéralement.

Pour créer un objet littéral, on utilise une syntaxe utilisant une paire d’accolades { … } qui indique au JavaScript que nous créons un objet.

Nos objets vont généralement être stockés dans des variables. Par abus de langage, on confondra alors souvent la variable et l’objet et on parlera donc « d’objet » pour faire référence à notre variable stockant une valeur de type objet. Dans l’exemple ci-dessus, on dira donc qu’on a créé un objet nommé « utilisateur ».

Un objet est composé de différents couples de « nom : valeur » qu’on appelle membres. Chaque nom d’un membre doit être séparé de sa valeur par un caractère deux-points : et les différents membres d’un objet doivent être séparés les uns des autres par une virgule.

La partie « nom » de chaque membre suit les mêmes règles que le nommage d’une variable. La partie valeur d’un membre peut être n’importe quel type de valeur : une chaine de caractère, un nombre, une fonction, un tableau ou même un autre objet littéral.

Les membres d’un objet qui ne servent qu’à stocker des données sont appelés des propriétés tandis que ceux qui manipulent des données (c’est-à-dire ceux qui contiennent des fonctions en valeur) sont appelés des méthodes.

 

Utiliser le point pour accéder aux membres d’un objet, les modifier ou en définir de nouveaux

Pour accéder aux propriétés et aux méthodes d’un objet, on utilise le caractère point . qu’on appelle également un accesseur. On va ici commencer par préciser le nom de l’objet puis l’accesseur puis enfin le membre auquel on souhaite accéder.

Cet accesseur va nous permettre non seulement d’accéder aux valeurs de nos différents membres mais également de modifier ces valeurs. Regardez plutôt le code ci-dessous :

Support HTML pour exemple d'accès aux membres d'une objet littéral JavaScript

On accède on on modifie les propriétés d'un objet avec l'opérateur point en JavaScript

On modifie la valeur des propriétés de notre objet littéral JavaScript

On affiche la valeur des propriétés de notre objet littéral JavaScript

See the Pen
Cours JavaScript 5.2.2
by Pierre (@pierregiraud)
on CodePen.

Ici, on commence par accéder aux propriétés nom et age de notre objet pierre en utilisant les notations pierre.nom et pierre.age. Cela nous permet de récupérer les valeurs des propriétés.

Dans le cas présent, on se contente d’afficher ces valeurs au sein de deux paragraphes de notre page HTML. Pour cela, on utilise la notation document.getElementById('{p1,p2}').innerHTML qu’on a déjà vu précédemment dans ce cours.

A ce niveau, vous devriez avoir remarqué qu’on utilise également des points pour accéder au contenu HTML de nos paragraphes et y placer les données souhaitées. En fait, c’est tout simplement parce que document est également un objet prédéfini d’une API (interface de programmation) appelée « DOM » (Document Object Model) que nous allons étudier dans la partie suivante.

Cet objet possède notamment une méthode getElementById() qui nous permet d’accéder à un élément HTML en fonction de son attribut id et une propriété innerHTML qui nous permet d’insérer du contenu entre les balises d’un élément HTML. Ici, on accède donc à nos paragraphes possédant les id='p1' et id='p2' et on place la valeur des propriétés nom et age de l’objet pierre entre les balises de ceux-ci.

En dessous, on utilise notre accesseur avec l’opérateur d’affectation = pour cette fois-ci modifier la valeur de la propriété age de notre objet pierre, et on affiche ensuite la nouvelle valeur pour bien montrer que la propriété a été modifiée.

Finalement, on utilise notre accesseur pour exécuter la méthode bonjour() de l’objet pierre. Pour faire cela, on procède de la même façon que pour exécuter une fonction anonyme placée dans une variable.

Enfin, on va encore pouvoir utiliser notre accesseur pour créer de nouveaux membres pour notre objet. Pour cela, il suffit de définir un nouveau nom de membre et de lui passer une valeur comme cela :

Ajouter des propriétés et des méthodes à un objet littéral en JavaScript

On définit de nouvelles propriétés et des méthodes à un objet littéral en JavaScript

See the Pen
Cours JavaScript 5.2.3
by Pierre (@pierregiraud)
on CodePen.

Ici, on ajoute une propriété taille et une méthode prez() à notre objet pierre. On invoque ensuite notre nouvelle méthode pour s’assurer qu’elle fonctionne bien.

 

Utiliser les crochets pour accéder aux propriétés d’un objet, les modifier ou en définir de nouvelles

On va également pouvoir utiliser des crochets plutôt que le point pour accéder aux propriétés de nos objets, mettre à jour leur valeur ou en définir de nouvelles. Cela ne va en revanche pas fonctionner pour les méthodes.

Les crochets vont être particulièrement utiles avec les valeurs de type tableau (qui sont des objets particuliers qu’on étudiera plus tard dans ce cours) puisqu’ils vont nous permettre d’accéder à une valeur en particulier dans notre tableau.

Dans le code précédent, la valeur de la propriété nom par exemple est un tableau. Notez qu’on utilise également ces mêmes crochets pour définir un tableau (encore une fois, nous reviendrons plus tard là-dessus).

En programmation, un tableau correspond à un ensemble de valeurs auxquelles vont être associées des index ou des clefs. On appelle l’ensemble clef + valeur un élément du tableau.

La plupart des langages de programmation gèrent deux types de tableaux : les tableaux numérotés et les tableaux associatifs. Le principe des tableaux numérotés est que les clefs associées aux valeurs vont être des chiffres. Par défaut, la première valeur va recevoir la clef 0, la deuxième valeur sera associée à la clef 1 et etc. Les tableaux associatifs vont eux avoir des clefs textuelles qui vont être définies manuellement.

Pour accéder à une valeur en particulier dans un tableau, on utilise la syntaxe « nom_du_tableau[clef] ».

Le JavaScript est un langage qui ne supporte que l’utilisation de tableaux numérotés. Dans le cas présent, notre propriété nom contient un tableau qui possède deux éléments : la valeur du premier élément est « Pierre » et la clef associée par défaut est 0. La valeur du deuxième élément est « Giraud » est la clef associée par défaut est 1.

Ainsi, pour accéder à la valeur « Pierre » de notre propriété nom de l’objet pierre, on écrira pierre.nom[0]. Pour accéder à la valeur « Giraud », on écrira pierre.nom[1].

Comme je l’ai dit plus haut, on va pouvoir en JavaScript utiliser cette même syntaxe pour accéder à n’importe quelle propriété d’un objet, pour modifier la valeur d’une propriété ou encore pour définir de nouvelles propriétés.

Pour faire cela, on va faire « comme si » notre objet était un tableau associatif composés d’éléments dont les clefs sont les noms des propriétés et les valeurs sont les valeurs associées.

Pour accéder à la valeur complète de la propriété nom de l’objet pierre, on pourra ainsi écrire pierre['nom']. Pour accéder à la valeur de mail, on écrira pierre['mail']. Si on souhaite accéder à la valeur du premier élément de notre tableau nom, on pourra encore écrire pierre['nom'][0].

On accède aux propriétés d'un objet en JavaScript en utilisant une syntaxe avec des crochets

On accède aux propriétés d'un objet en JavaScript en utilisant une syntaxe avec des crochets

See the Pen
Cours JavaScript 5.2.4
by Pierre (@pierregiraud)
on CodePen.

Notez que le fait qu’on puisse utiliser ce genre d’écriture fait qu’on a souvent tendance à comparer les objets en JavaScript à des tableaux associatifs justement.

Une nouvelle fois, nous étudierons les tableaux plus en détail dans une prochaine leçon. Pour le moment, concentrez-vous sur les façons d’accéder aux membres d’un objet et de les modifier.

 

L’utilisation du mot clef this

Il nous reste une dernière partie de notre objet à définir : le mot clef this qu’on utilise au sein de notre méthode bonjour().

Le mot clef this est un mot clef qui apparait fréquemment dans les langages orientés objets. Dans le cas présent, il sert à faire référence à l’objet qui est couramment manipulé.

Pour le dire très simplement, c’est un prête nom qui va être remplacé par le nom de l’objet actuellement utilisé lorsqu’on souhaite accéder à des membres de cet objet.

En l’occurrence, lorsqu’on écrit pierre.bonjour(), le mot clef this va être remplacé par pierre.

Quel intérêt d’utiliser this plutôt que directement pierre ? Dans le cas de la création d’un objet littéral, il n’y en a strictement aucun.

Cependant, vous allez voir qu’il va vite devenir indispensable d’utiliser this dès qu’on va commencer à créer des objets à la chaine de façon dynamique en utilisant par exemple un constructeur. Nous allons illustrer tout cela dès la prochaine leçon !

Laisser un commentaire