|
|
|
|||||||||||||
|
Objets, propriétés, méthodes et DOM
Il n'existe pas de propriétés ou méthodes communes à tous les objets. L'ensemble des objets Javascript faisant référence
aux éléments d'une page Web se nomme DOM (Document Object
Model). Le formulaire possède son objet form qui renferme d'autres sous-objets comme text, texarea, button, checkbox, combo, password, radio et select. Tout ceci part donc de window et s'enchaîne
les uns à la suite de l'autre. Ainsi pour faire référence
à un bouton dans le formulaire d'une page, il faut s'y prendre ainsi
: window.document.form.button
Ainsi, les objets sont organisés de façon hiérarchique, où les objets contiennent des sous-objets toujours plus précis et accessibles par des points. Lorsqu'on référe à un sous-objet, la référence doit toujours s'achever par le nom d'un propriété ou d'une méthode d'un objet. Sinon, une erreur sera affichée à l'effet que l'objet est indéterminé. Hiérarchie des classes imbriquées
en JavaScript
This est un mot clé courant dans la plupart des langages. Théoriquement, il s'agit d'un pointeur sur l'objet en cours d'utilisation. En plus simple, il s'agit d'un synonyme universel pour faire référence à un objet qu'on est entrain de modifier à l'intérieur d'une fonction de sa classe. this vient remplacer la référence au parent de l'objet, mais il n'est exploitable qu'à l'intérieur de la fonction en cours. Si vous écrivez le code d'une fonction qui manipule un objet, vous pouvez faire référence à l'objet en question à l'intérieur de la fonction , et ainsi accéder à ses propriétés et méthodes, en faisant this.methode() ou this.propriété. En plus, il est possible d'employer this pour faire référence à un élément Web en cours. Par exemple, si on passe en paramètre à une fonction la valeur d'un champ de texte, il est ensuite possible de faire référence à la valeur en faisant this.value. Il est aussi intéressant de passer this en paramètre à une fonction lorsqu'on est à l'intérieur d'une balise ( ce qui permet de préciser ce que this remplace ). Tout d'abord, il faut garder en tête que objet peut être considéré comme un synonyme de variable. Plusieurs objets sont créés implicitement lors de la déclaration d'une variable. Cependant, dans le cas d'objets comme Date, il est nécessaire d'utiliser le mot clé new pour déclarer les objets et appeler le constructeur de date. Ce constructeur s'inscrit : Date() Exemple :
Il est aussi possible de créer de nouveaux
objets qui sont personnalisés en codant nos propres classes. La
définition d'une classe sera traitée en 7.4.
Afin de créer son propre objet (pour l'instancier), certains
l'auront deviné, il vous faudra créer une classe. Qu'est-ce
que c'est qu'une classe?
Le JavaScript n'est pas un vrai langage orienté objet puisque
certains concepts primordiaux ne sont pas implémentés comme
l'héritage, le polymorphisme, etc.
Grâce à ce système, il devient possible de réunir plusieurs informations ayant un lien entre elles sous le couvert d'un seul mot beaucoup plus rapide à utiliser que de devoir répéter à chaque fois l'ensemble des informations. Donc on peut faire une classe qui regroupe toutes les informations qu'on désire conserver à propos d'un disque compact de musique et ainsi regrouper toutes ces informations dans une seule variable. Une classe doit contenir un constructeur. Il s'agit d'une fonction qui crée l'objet et lui donne, si nécessaire, ses valeurs à la création. (en c++, le constructeur possède une liste d'initialisation). Puis dans la classe il faut donner à l'objet ses propriétés et ses méthodes. Exemple :
Pour obtenir un objet, appelé aussi instance de la classe, on utilise une fonction spéciale appelée constructeur et qui porte le nom de la classe. Un objet est alors créé par l'instruction :
Les valeurs passées en paramètre vont affecter les propriétés
de l'instance (et ainsi les initialiser), conformément au code du
constructeur : ils doivent donc correspondre exactement, en place et en
nombre, aux paramètres formels du constructeur.
Utiliser des fichiers de codes de classes externes .js
La propriété prototype
Exemple :
Visionner toutes les propriétés d'un objet Il arrive lorsqu'on travaille avec un objet qu'on soit tenter de connaître rapidement toutes ses propriétés. Ainsi, disposer d'une manière rapide en Javascript vous simplifiera la tâche. Il s'agit de demander à Javascript d'afficher une liste de toutes les propriétés de l'objet ciblé. Pour ce faire, il existe une boucle for spéciale qui parcours les définitions de propriétés des objets prédéfinis de Javascript. Ainsi, ce truc ne fonctionne pas pour des classes que vous auriez définies vous-même. Cette boucle utilise le mot clé in ainsi qu'au nom de
l'objet. [in signifie effectivement "dans ce qui va suivre" comme
dans les langages de bases de données tels que SQL.]
Ensuite il est pratique de mettre dans la boucle une instruction d'écriture, document.write(), afin d'afficher les noms des propriétés et peut-être même leur valeur. Exemple :
Il serait intéressant de mettre ce code dans une fonction qui recevrait en paramètre le nom de l'objet dont on veut visionner les propriétés. Les objets link et anchor sont contenus dans des vecteurs
dont il est possible de faire référence par JavaScript. L'ordre
des liens dans le tableau correspond à l'ordre de leur apparition
dans la page. Les liens et les ancrages (appelés parfois cibles)
sont comptabilisés dans des vecteurs différents.
L'objet anchor a une propriété name servant à modifier le nom de la cible. L'objet link possède plusieurs propriétés. href spécifie l'adresse du lien et target l'endroit où la page doit se charger. host contient le nom du domaine et son port (ex : geocities.com), protocol indique le protocol utilisé (ex : http:), port fournit la valeur de port de la page web et pathname fournit l'endroit de l'emplacement du fichier au format UNC (Uniform Naming Convention). Il reste plus que la propriété hash qui donne le nom d'ancrage de la page. Tout cela mène à la conclusion qu'il est possible grâce aux propriétés de l'objet link de construire une syntaxe d'adresse URL complète en faisant :
Cet objet permet de créer des boutons effectuant les tâches Page précédente et Page suivant des navigateurs. La propriété length de l'objet history sert à connaître la longueur de l'historique actuel enregistré par le navigateur. L'objet history comporte plusieurs méthodes. back() permet de charger la dernière page précédemment chargée. La méthode forward() affiche la page suivante (il faut tout d'abord que l'usager ait revenu sur ses pas d'une ou plusieurs pages). La méthode go() accepte un paramètre numérique, positif ou négatif, pour se déplacer d'avant en arrière dans la liste de l'historique selon l'index des pages visitées. Exemple :
Il est possible d'utiliser la méthode go() afin de recharger la page en cours. L'index 0 correspond à la page actuellement chargée. Ainsi pour faire un bouton de rechargement de la page il suffirait de faire :
L'objet image existe pour toute page Web contenant au moins une image. Les images sont contenus dans un vecteur où l'ordre d'index des images correspond à leur position dans la page web. Grâce à l'index d'une image, il est possible d'obtenir des informations sur cette dernière telles que ses dimensions, la largeur de sa bordure, son nom, ses attributs d'espacement, sa source. L'objet image ne possède pas de méthode, mais il reste possible de modifier ses propriétés. Une autre propriété de l'objet image est complete. Il s'agit d'une valeur booléenne qui est à false tant qu'une image n'est pas chargée puis passe à true lorsqu'elle l'est. Préchargement d'image
Pour créer un objet image vous devez faire une variable qui recevra
l'image et ensuite faire appel au constructeur avec le mot clé new.
Exemple :
|