Le modèle objet du Javascript

1 – Introduction

Le langage javascript est un langage orienté objet, en plus il est doté de l’avantage de manipulation d’objets sans instanciation, et par suite vous pouvez manipuler tous ce qui apparaissent dans votre browser : fenêtres corps du document, boutons, zones de texte… comme etant des objets javascript. Nous n’allons pas ici traiter le coté POO du javascript proprement dit mais quelque exemple d’objets fondamentaux. Pour accéder aux propriétés d’un objet on utilise la syntaxe:

objet.propriété

2 – Objet Javascript prédéfinit

2.1 – L’objet window

Tous les composants d’une page web sont des objets y compris l’objet windows qui est leur parent, l’objet window est parfois appelé l’objet par excellence. Exemple pour écrire un texte on utilise la syntaxe :

window.document.write(‘bonjour’);

Propriétés et méthodes de l’objet window

Propriété ou méthode Description
document permet d’accéder à tous les objets
status affiche un message dans la barre d’état
name le nom de la fenêtre actuelle
window fenêtre actuelle
Home() permet d’atteindre la page d’accueil
Alert() affiche un message sur une boite
Prompt() affichage d’une boite qui contrôle la saisi clavier
Close() ferme la fenêtre
Open() ouvre une fenêtre pop-up
Blur() cache la fenêtre
resizeBy() permet de modifier les dimensions de la fenêtre

Remarque

En Javascripte, ils existent de nombreux autres  objets  dotés de méthodes et de propriétés accessibles directement sans instanciation, on peut en citer :  String, Math, date, navigator, array…

Si on veut  à titre d’exemple examiner l’objet String, de nombreuses méthodes sont associées à ce dernier :

charAt ()   Retourne le caractère à l’index spécifié (position)

charCodeAt ()   Retourne l’Unicode du caractère à l’index spécifié

concat ()   Joint deux chaînes ou plus et renvoie une nouvelle chaîne jointe

endsWith ()   Vérifie si une chaîne se termine par des chaînes / caractères spécifiés

fromCharCode ()   Convertit les valeurs Unicode en caractères

includes ()   Vérifie si une chaîne contient la chaîne / les caractères spécifiés

indexOf ()   Renvoie la position de la première occurrence trouvée d’une valeur spécifiée dans une chaîne

lastIndexOf ()   Renvoie la position de la dernière occurrence trouvée d’une valeur spécifiée dans une chaîne

localeCompare ()   Compare deux chaînes dans les paramètres régionaux en cours

match ()   Recherche une chaîne pour une correspondance avec une expression régulière et renvoie les correspondances

repeat ()   Retourne une nouvelle chaîne avec un nombre spécifié de copies d’une chaîne existante

replace ()   Recherche une chaîne pour une valeur spécifiée ou une expression régulière et renvoie une nouvelle chaîne dans laquelle les valeurs spécifiées sont remplacées

search ()   Recherche une chaîne pour une valeur spécifiée ou une expression régulière et renvoie la position de la correspondance

slice ()   Extrait une partie d’une chaîne et retourne une nouvelle chaîne

split ()   Divise une chaîne en un tableau de sous-chaînes

startsWith ()   Vérifie si une chaîne commence par des caractères spécifiés

substr ()   Extrait les caractères d’une chaîne, en commençant à une position de départ spécifiée, et à travers le nombre de caractères spécifié

substring ()   Extrait les caractères d’une chaîne, entre deux index spécifiés

toLocaleLowerCase ()   Convertit une chaîne en minuscules, en fonction des paramètres régionaux de l’hôte

toLocaleUpperCase ()   Convertit une chaîne en majuscules, en fonction des paramètres régionaux de l’hôte

toLowerCase ()   Convertit une chaîne en lettres minuscules

toString ()   Retourne la valeur d’un objet String

toUpperCase ()   Convertit une chaîne en majuscules

trim ()   Supprime les espaces des deux extrémités d’une chaîne

valueOf ()   Renvoie la valeur primitive d’un objet String

Nous n’allons pas pouvoir traiter toutes ces méthodes ici, mais amusons nous à faire un petit exemple simple pour la première charAt().Le lecteur curieux peux consulter ces méthodes en détails chacune avec un exemple bien expliqué  ici

Exemple

<script type="text/javascript">
var s = new String("bonjour");
alert("Le premier caractère de la chaine 'bonjour' est  " + s.charAt(0));
</script>

Ce qui affiche au navigateur :

3 – Prototypes orienté objet

JavaScript utilise des prototypes où de nombreux autres langages orientés objet utilisent des classes pour l’héritage.  Il est possible de simuler de nombreuses fonctionnalités basées sur des classes avec des prototypes en JavaScript.

3.1 – Fonctions en tant que constructeurs d’objets

On peut créer des objets dotés de paramètres et propriétés en déclarant de simples fonctions Javascript.

Exemple

<script type="text/javascript">
function mobile(marque,system){
this.marque=marque;
this.system=system;
}
</script>

Cet exemple permet de créer un objet nommé : mobile doté des deux paramètres : marque et system. Si on veut par exemple faire une instanciation pour créer un objet téléphone de marque  : Galaxy  dont le système est Android, il suffit d’ajouter le code :

var mymobile=new mobile("Galaxy","Android");
//affichage des résultats
alert("Mon mobile est  " + mymobile.marque + " Son system est  " + mymobile.system);

3.2 – Les classes  Javascript

Javascript  est doté de l’instruction class qui permet à l’utilisateur de créer ses propres classes, de faire l’instanciation pour créer des objets…

Syntax :

class nom_de_la_classe {
  constructor(paramètres) {
  }
}

Exemple

<script type="text/javascript">
class Rectangle {
  constructor(hauteur, largeur) {
    this.hauteur = hauteur;
    this.largeur = largeur;
  }
}
</script>

Cet exemple permet de construire une classe nommée rectangle dotée d’un constructeur ayant deux paramètres hauteur et largeur. Pour faire une instanciation sur cette classe et créer un objet rectangle il suffit d’ajouter le code :

const R= new Rectangle(20, 12);
//affichage des résultats
alert("la hauteur du rectangle est : "+R.hauteur + " La largeur du rectangle est : "+ R.largeur);

Ce qui affiche après exécution :

Remarque

On peut aussi ajouter d’autres méthodes à la classes, par exemple une méthode qui calcul la surface, une autre qui calcul le périmètre…

<script type="text/javascript">

class Rectangle {
  constructor(hauteur, largeur) {
    this.hauteur = hauteur;
    this.largeur = largeur;
  }
  surface(){
  return this.hauteur*this.largeur;
  }
  
  périmètre(){
  return 2*(this.hauteur + this.largeur);
}
}
const R= new Rectangle(8, 6);
//affichage des résultats
alert("la surface du rectangle est : "+R.surface() + " Le périmètre du rectangle est : "+ R.périmètre());
</script>