Premiers pas en JavaScript
24.3 Ajouter des propriétés à ses propres objets
cuy copyleft
  See You Why?  

 


Utiliser ses propres objets (24.2) | | Exercices : objets propres (24.8)

Contenu

 

 

I. Créer ses propres objets

voir <<<séquence précédente

 

II. Utiliser ses propres objets

<<<séquence précédente

 

III. Ajouter des propriétés à ses propres objets

Lorsque nous avons créé un objet, il peut s'avérer utile d'ajouter de nouveaux objets plus loin dans la programmation. JS a cette souplesse d'ajuster les objets selon les besoins de l'utilisateur.

De plus, il peut aussi s'avérer utile de préciser la description de nos objets... il faudra donc leur donner une nouvelle propriété. Une nouvelle propriété peut être ajoutée à une occurrence d'un objet - fournie par le système ou définie par le programmeur.

 

Par affectation d'une valeur à cette propriété

en précisant son nom et sa valeur

Cet ajout est effectué automatiquement lorsqu'on affecte une valeur à cette propriété.

Notre brave instituteur qui avait défini ses rectangles avec deux propriétés longueur et largeur, pourrait trouver utile d'avoir des rectangles qui disposent d'une nouvelle propriété, la couleur par exemple. Il lui suffirait d'écrire ceci :

o_monRect02.couleur = "rouge";

Attention cependant, cette facilité d'écriture a sa contrepartie... elle risque de générer des erreurs difficilement détectables... à bon entendeur... Par exemple utiliser l'expression o_monRect03.couleur engendrerait une erreur si la propriété couleur n'a pas été fixée par le programmeur pour l'objet o_monRect03, ni pour aucun autre rectangle. En effet, la propriété couleur n'a été fixée que pour l'objet o_monRect02.
Rappelez-vous en... c'est une erreur difficile à retrouver en JS.

L'enseignant pourrait avoir besoin de deux autres propriétés pour chacun de ses objets... pardon, pour chacun de ses élèves, à savoir pour chacun, son code postal (zipcode) et la commune où il est domicilié (commune). Il lui suffirait d'écrire :

obba09.zipcode = "20004";
obba09.commune = "Washington DC";

Ici aussi, les propriétés zipcode et commune n'ont été définies que pour l'élève (ou objet) obba09 ; aucun autre élève (ou objet) ne connait les propriétés zipcode ou commune.

On pourrait même imaginer une propriété propre à chaque élève et qui soit ses résultats dans toutes les disciplines enseignées... comment ??? On pourrait imaginer une propriété "resultat" qui soit un tableau de tableaux, mais ce ne sera possible qu'après nos chapitres 26 et suivants, relatifs aux tableaux.

 

en affectant une valeur sans préciser son nom

S

Par l'emploi de la propriété Prototype

Tous les objets JS, qu'ils soient prédéfinis ou définis par un programmeur, possèdent une propriété intrinsèque 'prototype' qui permet, entre autres, d'ajouter aussi bien de nouvelles propriétés que de nouvelles méthodes.
C'est un peu comme si on modifiait le profil type ou empreinte (appelé à l'époque prototype) de l'objet défini par la fonction que nous avons appelée 'constructeur' de l'objet.

Ainsi, si je souhaite que tous mes élèves aient par défaut comme propriété commune la valeur "Washington DC", il me suffirait d'ajouter dans ma source (après mon constructeur et après les affectations pour chaque élève) :

eleve.prototype.commune = "Washington DC" pour que tous mes élèves aient maintenant une nouvelle propriété commune qui aura comme valeur "Washington DC"... et rien n'empêche d'affecter une autre valeur pour l'un de mes élèves. Il suffirait alors de préciser : rero81.commune="Hollywood";. Cela suffirait pour faire une exception et préciser que mon élève Ronald REAGAN habite Hollywood.

Et si aucune commune n'est sensée réapparaitre plus souvent qu'une autre, je pourrais très bien attribuer la propriété commune qui aura comme valeur ""... pour tous mes élèves, en écrivant: eleve.prototype.commune = "";

 

 

VIII. Exercices relatifs à la création d'objets propres

voir suite >>>

 

IX. Test relatif à la création d'objets propres

voir suite >>>

 

 


Utiliser ses propres objets (24.2) | | Exercices : objets propres (24.8)