Vous pouvez me contacter via Facebook pour questions & suggestions : Page Facebook relative à mon site
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.
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.
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é
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.
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 :
En fonction du rendu du script et de vos connaissances, vous devez être capable de compléter le script.
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.
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()" !
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 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.
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".
Affichez la console pour observer les "arrays" découlant des trois dernières instructions.
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.
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é.