Accueil

Traduction

Tutoriel sur JS natif, Vue.js, jQuery.js & Node.js

Tutoriel JavaScript - recherche

L'auteur : Patrick Darcheville

Vous pouvez me contacter via Facebook pour questions & suggestions : Page Facebook relative à mon site

JavaScript : programmation objet - notation JSON

Dans le chapitre précédent j'ai évoqué les objets natifs de JavaScript : les Dates, les objets String, les objets Math, etc.
Dans cette page je vais vous montrer comment créer vos propres objets et les manipuler.
J'avoue que comme d'autres développeurs JS, je me contente le plus souvent d'utiliser que les objets natifs.

Création d'objet par un constructeur - exemple 1

Un constructeur est simplement une fonction définissant un objet, ses propriétés et méthodes.
Dans ce premier exemple, l'objet ne comprend que des propriétés.

Le script

L'objet créé se nomme "voiture" et comprend 4 propriétés.
Je crée ensuite deux instances de l'objet : auto_jean & auto_paul. Dans d'autres langages on dit que l'on crée deux objets de la classe "voiture".
Notez l'emploi de la notation pointée : objet.propriété

Le rendu dans un Iframe

Création d'objet par constructeur - exemple 2

Dans l'exemple précédent les objets ne comprenaient que des propriétés or si on veut manipuler une objet ce dernier doit comprendre aussi des méthodes !
Une méthode est une fonction propre à l'objet.

Le script

L'objet créé se nomme voiture et comprend 4 propriétés et une méthode.
La méthode se nomme presenter(). Il s'agit d'une fonction propre à l'objet qui affiche ici toutes les propriétés de l'objet.

Pour décrire une méthode il faut employer les mots réservés function et return. Ce qui est logique : une méthode est en fait une fonction. propre à un objet et qui retourne une valeur.

Pour appeler une méthode d'un objet il faut employer la syntaxe : objet.methode(). N'oubliez pas les parenthèses, une méthode c'est une fonction !

Je procède ensuite à un changement de propriétés pour l'instance "mavoiture".

Le rendu :

Exercice d'application

Le script à compléter

Le rendu dans Iframe

Travail à faire

En fonction du rendu du script et de vos connaissances, vous devez être capable de compléter le script.

Les classes et l'héritage - notation pointée optionnelle

En POO classique, une classe est la description d'un objet. La classe définit donc les propriétés et les méthodes de l'objet.
Pour se rapprocher de la syntaxe objet des autres langages, la version ECMAScript de 2015 introduit les classes.

Dans l'exemple qui suit je vais définir un objet via une classe. Je vais aussi créer une deuxième classe héritant de la première.
Je vais aussi évoquer la notation pointée optionnelle : très pratique.

Exemple

Je définis donc la classe "Auto" . Il est d'usage que la première lettre de la classe soit une majuscule.
La fonction constructor() initialise les propriétés et méthodes.
Notez que la classe "Auto" ne comprend que des propriétés.

A partir de la classe "Auto" je définis la classe "Tacot" par héritage avec l'instruction class Tacot extends Auto.
La fonction super() reprend la structure de la classe mère.
Dans cette nouvelle classe je définis deux nouvelles propriétés (annee & etat) et une méthode nommée "presenter()".
Je crée deux instances de la classe "Tacot" et j'affiche toutes leurs propriétés via la méthode "presenter()".
Regardez attentivement le dernier "document.write()" !

Notation pointée optionnelle

Je ne sais plus si l'instance auto_pierre appartient à la classe mère "Auto" OU à la classe fille "Tacot.
Il n'est donc pas certain que l'objet "auto_pierre" possède les propriétés "annee" et "etat". J'utilise donc pour ces deux propriétés la notatation optionnelle : caractères ?. entre objet et propriété.
Grâce à cette syntaxe il n'y a pas plantage du script mais simplement affichage éventuel de "undefined" comme vous le constatez dans le rendu ci-dessous.

Le rendu

La notation JSON

Le format JSON

Le JSON (JavaScript Object Notation) est un format standardisé de représentation des données.
Ce format est nativement reconnu par tous les navigateurs.
Il est aussi compris par d'autres langages de programmation que JS.
Il remplace donc progressivement le format d'échange de données XML.

Un objet JSON est un ensemble de couples propriéte:valeur.
Les couples sont séparées par une virgule.
Entre la propriété et sa valeur un double point.

Un objet créé avec la syntaxe JSON

Dans un script je créé un objet "bar" avec des propriétés et une méthode en utilisant la notation JSON.
Le script :

L'objet bar décrit ce poisson osseux à la chaire succulente.
L'objet comprend 5 propriétés et une méthode fiche().
Attention la clé "vernaculaires" a deux valeurs d'où l'emploi des crochets.

La méthode génère du code HTML pour afficher toutes les propriétés y compris l'image.

Observez très attentivement les trois dernières instructions du script :
La méthode keys appliquée sur Object retourne un tableau contenant toutes les clés de l'objet.
La méthode values appliquée sur Object retourne un tableau contenant toutes les valeurs de l'objet.
La méthode entries appliquée sur Object retourne un tableau contenant toutes les couples clé/valeur

Ces méthodes ont été introduites par la version 2017 de ECMAScript et sont directement inspirées de méthodes utilisées dans le langage Python pour les structures dites "dictionnaires".

Le rendu

Affichez la console pour observer les "arrays" découlant des trois dernières instructions.

Tableau d'objets

Vous connaissez les tableaux indicés ne comprenant que des valeurs basiques (chaînes de caractères ou nombres). Je vais vous montrer maintenant comment produire des tableaux d'objets donc un ensemble structuré de données.

Solution 1

On définit une classe puis on crée des instances de cette classe et enfin on regroupe tous ces objets dans un tableau indicé.

Le code

Parcours du tableau d'objets avec la structure for ... of ....

Notez les trois dernières instructions qui affichent dans la console une clé OU une valeur OU un couple clé/valeur pour un des objets du tableau.

Le rendu dans un Iframe

Affichez la console du navigateur !

Solution 2

On utilise la notation JSON pour créer un tableau d'objets. Vous allez voir que c'est beaucoup plus simple que la solution précédente. Cependant il y a un inconvénient : les différents objets ne sont plus nommés ...

Le code

Membres est un tableau indicé d'objets définis au format JSON (emploi d'accolades pour chaque élément) mais l'ensemble entouré de crochets (comme tout tableau indicé).
Notez les trois dernières instructions qui affichent dans la console pour un élément : clé OU valeur OU couple clé/valeur.

Le rendu

Affichez la console !