Vous pouvez me contacter via Facebook pour questions & suggestions :
Page Facebook relative à mon site
JavaScript est un langage orienté objet c'est à dire que ce langage dispose d'objets.
Un objet est une entité qui possède des propriétés et peut être manipulée avec des méthodes ; une méthode est une fonction spécifique à un objet. Un objet est obtenu grâce à un constructeur.
JavaScript est riche en objets prédéfinis (ou natifs) que je vais présenter dans ce chapitre.
Chaque version de JS propose pour de nouvelles méthodes qui facilitent le travail du développeur.
Sachez aussi qu'une chaine peut désormais être écrite sur plusieurs lignes et que l'on peut mentionner des variables dans ce type de chaine : création d'un "template".
On utilise le "constructeur" Date avec le mot réservé new pour créer une nouvelle "instance de
la "classe Date". On peut dire plus simplement "créer un objet de type date" Ou encore "créer une date & heure".
N'oubliez pas le "D" majuscule à "Date" pour bien préciser qu'il s'agit d'un constructeur.
Le constructeur Date() sans argument retourne l'instant présent.
Sinon il faut argumenter dans l'ordre : année, mois, jour, [heure, minute seconde]).
Les arguments entre crochets sont facultatifs.
Attention le rang du mois doit être un entier compris entre 0 et 11. Donc si le mois est "janvier" il faut saisir 0 et 11 pour "décembre !
L'argument de Date() peut être aussi un TimeStamp : nombre de millisecondes depuis le 1er janvier 1970 à 0 heure.
Le constructeur Date() produit toujours une date réaliste : voir rendu du script.
Pour la dernière date, il n'y a pas affichage du "30 février 2019" (date qui n'exite pas) mais du "2 mars 2019".
Testez dans la console cette série d'instructions JS :
J'ai oublié le mot clé "new" devant "Date()".
La variable "jour4" est considérée comme de type String et la dernière instruction "plante" .
Donc n'oubliez pas le mot clé "new" !
JavaScript propose une multitude de méthodes pour interroger une date.
Utilisons la console pour nous familiariser avec la syntaxe relative à cet objet ;
console utilisée le samedi 4 juin 2022.
Ici on n'a pas passé d'argument au "constructeur" Date donc la variable cejour récupère par défaut l'instant
présent (date et heure de l'appel sur le terminal de l'utilisateur).
Nous avons donc utilisé des méthodes "getter" c'est à dire des méthodes pour récupérer des infos sur une instance de l'objet Date.
Il existe aussi les méthodes "setter" mais qui sont beaucoup moins utiles ...
Vous avez : setFullYear(), setMonth(), setDate(), setHours(), etc.
Console du navigateur utilisée le dimanche 16 avril 2023 vers 22 heures :
Les méthodes toLocaleDateString() & toLocaleTimeString() sont particulièrment intéressantes pour afficher une date ou une heure dans un format compréhensibles pour un francophone.
Il serait préférable d'afficher le mois en toutes lettres et le nom du jour (dimanche, lundi, ...). C'est possible en combinant des méthodes "getter" avec des tableaux indicés.
Le rang du mois et le type de jour (sous forme d'indices) sont convertis en chaines grâce aux tableaux indicés.
Si "rang_mois" vaut 4 alors "nom_mois" retourne "mai".
Si "type_jour" vaut 0 alors "nom_jour" retourne "dimanche".
La nature du jour et le mois apparaissent sous forme textuelle grâce à l'emploi de tableaux indicés dans le code.
EMACScript propose désormais le constructeur Intl.DateTimeFormat pour formater proprement et rapidement des dates.
Donc le recours aux tableaux indicés comme ci-dessus devient inutile.
hour12 vaut false / true pour afficher l'heure sur 24 heures (ou 12 heures).
Les propriétés weekday, year, month, day, hour, minute, second peuvent avoir comme valeur : "numeric", "long", "short" ou "2-digit".
Constatez que l'instant présent apparait sous un format très clair pour un francophone.
Le mois et le type de jour apparaissent sous forme textuelle car j'ai utilisé la valeur "long" pour les propriétés month & weekday
var ladate = new Date(annee, mois+6,30, heure+1,0,0) ; : cette instruction construit une nouvelle date à partir de la date du jour ; 6 mois plus tard, le 30 du mois et une heure plus tard.
La différence entre deux instances de Date donne le nombre de millisecondes entre ces deux instants.
Je suis né le 19 février 1953 donc : new Date(1953,1,19) ; le mois de février à l'indice 1.
Pour calculer l'âge en années et mois, c'est un peu plus compliqué ...
Pour créer un objet String (une chaine) vous pouvez utiliser le constructeur String mais en général on préfère créer une variable de type string avec la syntaxe : let/var/const nomVariable ="suite de caractères alphanumériques"
Une chaine est délimitée obligatoirement par des guillemets simples ou doubles. Il faut utiliser le même délimiteur en début et fin de chaine.
Si la chaine contient une apostrophe il faut délimiter celle-ci par des guillemets doubles à moins d'échapper l'apostrophe.
Exemples de création de chaines :
let voyelles ='aeiouy'
let consonnes = "bcdfghjklmnpqrstvwxz"
let surnom = "l'emmerdeur"
let pseudo = 'l\'emmerdeur'
var message = new String("bonjour");
Tous les objets string ont été créés de façon littérale sauf le dernier (créé avec le constructeur String().
Dans un script il est possible d'écrire une chaine sur plusieurs lignes à condition qu'elle soit délimitée par des accents graves ("backquotes" en anglais).
Pour produire un "backquote" composez altgr + `7
Si la chaine multilignes contient un accent grave, il faudra "'échapper" celui-ci.
La méthode indexOf() possède un deuxième argument (facultatif) qui précise à partir de quelle position doit commencer la recherche de
la sous chaîne passée en premier argument.
Je vous rappelle que la méthode indexOf() retourne -1 si elle n'a pas trouvé la sous chaîne dans la chaîne.
Donc si la chaîne saisie comprend un arobase et un point après l'arobase alors les variables rang_arobase et rang_point
contiennent un entier supérieur à -1 (supérieur ou égal à zéro).
Le rendu :
Emploi des méthodes indexOf() & include().
La méthode includes() est une méthode récente et aussi globale car elle peut être aussi utilisée avec les tableaux.
La méthode includes() retourne un booléen et admet en deuxième argument l'indice de départ.
Vous pouvez aussi utiliser "l'artillerie lourde" : comparer la saisie à un objet de type RegExp ...
Les expressions régulières
La variable HTML est une chaine multilignes contenant du balisage et des variables.
Il faut cliquer sur le bouton de commande pour générer ce "template".
La totalité du contenu de la partie BODY est générée par le template !
Remarquez que la partie BODY est initialement vide.
Notez l'emploi d'une fonction fléchée et de la méthode map appliquée au tableau.
Les méthodes de l'objet Math (avec un M majuscule car c'est un constructeur) permettent d'effectuer des calculs.
Commandes à saisir dans la console :
Il existe aussi des fonctions trigonométriques ...
A saisir dans la console :
Surtout respectez la casse : PI en majuscule, E en majuscule !
Actualisez la page pour simuler un nouveau lancer.
Nous avons une boucle qui est exécutée 6 fois et génère 6 entiers compris entre 1 et 6
La méthode random() génère de façon aléatoire un réel compris entre 0 et 1 exclu (maximum : 0.9999....)
En multipliant par 6 ce réel on obtient donc un autre réel compris entre 0 et 6 exclu
En appliquant la méthode ceil() à ce réel on obtient un entier compris entre 1 et 6 et c'est bien ce que nous voulons.
Attention si on avait appliqué la méthode floor() on aurait obtenu un entier compris entre 0 et 5 ce qui ne correspond pas vraiment aux faces d'un dé ...
On peut argumenter les méthodes max() & min() de l 'objet Math avec une variable identifiant un tableau indicé (objet Array).
Attention le nom de la variable faisant référence à un tableau doit être précédée de trois points : opérateur de décomposition.
JavaScript propose désormais le constructeur Intl.NumberFormat pour formater proprement et rapidement des nombres.
Il n'est donc plus nécessaire d'utiliser une bibliothèque de formatage telle Numeral.js.
A partir de cet objet paramétré, la méthode format() retourne le nombre au format défini.
Ce nouvel outil est très intéressant pour afficher les sommes dans un format francophone : utilisation de l'espace et de la virgule.
Dans le script ci-dessous je rappelle aussi des méthodes anciennes : toFixed(), toLocaleString().
Le script :
La première méthode arrondit à l'affichage en fonction de n (nombre de décimales).
La deuxième méthode utilise la virgule en guise de séparateur décimal (et non pas le point) et l'espace en guise de séparateur de milliers.
Ces deux méthodes n'étaient guère satisfaisantes car partielles.
Imaginons que "1000000.524" soit un montant en euros et en France, il faut afficher : 1 000 000,52 €.
Et s'il s'agit d'un montant en dollars aux USA : il faut afficher : $ 1,000,000.52
En format français le séparateur de milliers est l'espace et le séparateur décimal est la virgule
alors qu'en format US le séparateur de milliers est la virgule et le séparateur décimal est le point.
S'il s'agit d'un montant monétaire la propriété "style" doit avoir pour valeur "currency".
La propriété "currency" précise l'unité monétaire : 'EUR', 'USD', ...
Le rendu dans un Iframe :
JS interprète correctement des nombres exprimés en notation scientique.
Pour exprimer 1 000 000 en notation scientifique il faut écrire 10e6.
Exemple :
Je crée un format francophone pour afficher les sommes importantes avec le constructeur Intl.NumberFormat(). Il suffit de préciser en argument du constructeur "fr-FR" pour que le séparateur de milliers soit l'espace et le séparateur décimal soit la virgule. En effet le deuxième argument de cette fonction est facultatif.
Le rendu dans un Iframe :
J'ai déjà consacré tout un chapitre aux tableaux dans un chapitre précédent (liste simple, liste à plusieurs dimensions, liste clé-valeur, liste sans doublons).
Donc je vous renvoie à ce chapitre :
les tableaux - objets array, map & set
Window est l'objet JavaScript de plus haut niveau dans la hiérarchie des objets.
Il comporte un grand nombre de méthodes dont certaines que vous connaissez déjà : alert(), prompt(), confirm()
Il est le seul objet à autoriser une écriture simplifiée. En effet dans le cadre de la notation pointée il n'est pas obligatoire de préciser window.
Ainsi au lieu d'écrire window.alert() on se contente d'écrire alert()
Le principal sous objet de l'objet window est l'objet document qui comprend à son tour des objets ...
L'objet document est à la base de l'interface DOM.
Grâce à cette méthode vous pouvez écrire dans la page web.
Attention l'exécution d'une première instruction basée sur document.write provoque l'effacement de la page déjà chargée.
Vous voulez qu'un script affiche la table de multiplication par n (n : entier saisi par l'utilisateur).
Il suffit d'utiliser comme instructions basées sur document.write avec en arguments des balises HTML.
Le script :
Le rendu de ce code dans un nouvel onglet
C'est grâce à des méthodes de l'objet document que l'on peut cibler dans un script des éléments de la page.
L'argument est toujours un sélecteur CSS !
Exemple de routine : pour affecter la couleur de fond vert à chaque balise H3 il suffira d'écrire :
Il s'agit d'un sous-objet de document qui cible toutes les images de la page.
Exemple : un clic sur un bouton de commande permet d'agrandir toutes les images de la page.
Le code de la page: