Computing">
Java Script
Java Script
de
JavaScript
› Introduction
› Le rôle de JavaScript
› Intégrer JavaScript ans une page web
› Les règles de syntaxe du code
› Constantes et Variables
› Types de données
› Les opérateurs
› Les structures de contrôle
› Les boîtes de dialogue
› Les Tableaux
› Les chaines de caractères
Les bases de JavaScript
› Les Dates
› Les expressions régulières
› Les Fonctions
› Gestion des exceptions
› la Programmation Orientée Objet
Les bases de JavaScript
Introduction
Le JavaScript est la partie client d’un langage de scriptage. Développer par
netscape, le JavaScript est utilisé avec le HTML pour la création d'un site Web.
Initialement les pages Web ont été conçues uniquement avec le html. Le html
qui n'est rien d'autre que des pages statiques. L'interaction avec l'utilisateur et
les changements dynamiques ne sont pas possible avec le html. Un problème
résolu avec la venue des langages de script.
Le JavaScript fonctionne avec la plupart des navigateurs principaux tels que
l'Internet Explorer, Mozilla, Firefox, Netscape, Opera, Safari et plus encore.
Les bases de JavaScript –
Le rôle de JavaScript
› Lire/écrire un cookie
› Utiliser des événements afin de déclencher des actions dans la page web,
sans communication avec le serveur (ex : afficher du texte, une image suite
à un click ou au survol d'une zone).
Les bases de JavaScript –
JavaScript ne pet pas:
- lire des informations contenues sur le serveur (c'est le travail de PHP, Java, Perl...)
- lire des informations contenues sur le poste client (à l'exception des cookies). (ouf !).
La casse: Une des principales difficultés de JavaScript réside dans le fait que
c’est un langage sensible à la casse, c’est à dire qu’il différencie les majuscules
des minuscules. Les commentaires: L’ajout de commentaires dans un bloc de
code JavaScript s’effectue de manière mono-ligne " //commentaire " ou multi-
lignes " /*commentaire*/ ".
› Une variable déclarée dans une fonction aura une portée limitée à cette
seule fonction, c’est-à-dire quelle est inutilisable ailleurs. On parle alors de
VARIABLE LOCALE.
Le Typage
JavaScript est un langage non typé. Cela signifie que le type d’une variable est
défini uniquement au moment de l’exécution.
L’interpréteur JavaScript a la responsabilité de créer la valeur du bon type en
fonction de l’initialisation ou de l’affectation. Le langage n’impose pas
l’initialisation des variables au moment de leur création. Cependant il y a
quelques types préexistants.
Les bases de JavaScript –
Types de données
Les types de données principales (primitives) sont :
›String: suite de un ou plusieurs caractères Unicode, utilisé pour représenter du texte
› Number: en JavaScript un nombre peut être un entier ou un réel, en interne il es
toujours représenté comme un réel.
› Boolean: est une valeur de vérité, elle spécifie si la condition est vrai ou non. il ne
reconnaît que les deux littéraux true et false.
Les types de données composites (référence) sont : Dans JavaScript, les objets
et les tableaux sont gérés quasiment de la même manière, car les tableaux
sont simplement un type particulier d'objet.
› Object: est un ensemble de correspondances entre des clés et des valeurs. Les clés
sont représentées par des chaînes ou des symboles. Les valeurs peuvent être de
n'importe quel type.
› Tableau: est un ensemble d'éléments contigus repérés par leur indice, qui est un
nombre entier.
Résult
Signe Nom Exemple
at
== égal x==11 true
< inférieur x<11 false
<= inférieur ou égal x<=11 true
> supérieur x>11 false
=< supérieur ou égal x>=11 true
!= différent x!=11 false
=== strictement égal a ==='11' false
!== strictement différent a !== '11' true
Les opérateurs associatifs:
Le but de ces opérateurs et de simplifier les affectations:
Les bases de JavaScript – Les opérateurs
Significatio Résult
Signe Description Exemple
n at
+= plus égal x+=y x=x+y 16
-= moins égal x-=y x=x-y 6
*= multiplié égal x*=y x=x*y 55
/= divisé égal x/=y x=x/y 2.2
if (condition)
{
liste d'instructions
switch(expression) {
// si la condition réalisée (vraie) case Valeur1: code block break;
}else{ case Valeur1 : code block break;
autre série d'instructions // si la default:
condition n’est pas réalisée (fausse) default code block }
Les bases de JavaScript – Les structures de
contrôle
Les structures itératives (ou répétitives : les
boucles)
Les boucles sont des structures qui permettent d'exécuter plusieurs fois la
même série d'instructions jusqu'à ce qu'une condition ne soit plus réalisée.
La façon la plus commune de faire une boucle, est de créer un compteur et de
faire arrêter la boucle lorsque le compteur dépasse une certaine valeur.
Les bases de JavaScript – Les structures de
contrôle
La boucle for
Cette instruction crée une boucle qui se base sur trois expressions. Ces
expressions sont entre parenthèses, séparées par des points virgules et
suivies par l'instruction à exécuter dans la boucle.
instruction
}
var n = 0;
var x = 0;
var i = 0;
do { i ++; [Link](i);
} while (i < 5);
Les bases de JavaScript – Les boîtes de dialogue
Définition
Une boîte de dialogue est une fenêtre qui s'affiche au premier plan suite à un
événement, et qui permet:
›Soit d'avertir l'utilisateur
›Soit le confronter à un choix
›Soit lui demander de compléter un champ pour récupérer une information
Javascript propose trois types différents de boîte de dialogue, dont
l'utilisation se rapporte à une de celles décrites ci-dessus.
Boîte de dialogue alert()
Permet d'afficher une boîte de dialogue de type avertissement, ne laissant à
l'utilisateur que la possibilité d'appuyer sur un bouton Ok.
function ExempleAlert(){
alert(« Message d’alert :\n Boîte de dialogue
Alert");
}
Les bases de JavaScript – Les boîtes de dialogue
function ExempleConfirm(){
if (confirm(« êtes-vous un Web développeur?")){
alert("Vous venez de cliquer sur le bouton :\n OK");
} else{
alert("Vous venez de cliquer sur le bouton :\n
Annuler");
}
}
Les bases de JavaScript – Les boîtes de dialogue
function ExemplePrompt(){
var prenom = prompt('Saisissez votre
prénom',‘Mohammed');
if (prenom != null && prenom != ""){ alert(" Votre
Prénom:\n"+ prenom );
} else{
alert(" Valeur par défaut");
}
}
Les bases de JavaScript – Manipuler les
Tableaux
Un tableau, ou plutôt un array en anglais, est une variable qui contient
plusieurs valeurs, appelées items. Chaque item est accessible au moyen d'un
indice et dont la numérotation commence à partir de 0.
Déclarer un tableau
On utilise bien évidemment var pour déclarer un tableau, mais la syntaxe
pour définir les valeurs est spécifique :
Var MyTab1 = [element0, element1, ..., elementN];
Var MyTab2 = new Array(element0, element1[, ...[,
elementN]]); Var MyTab3 = new Array(10);
Les bases de JavaScript – Manipuler les Tableaux
Parcourir un tableau
alert([Link]());//Affiche: 7
alert(tab);//Affiche: 2,4
//Exemple de Suppression
alert([Link](1,2));//Affiche: 2,3. Les éléments
supprimés alert(tab); //1,4,5
//Exemple d'ajout :
alert([Link](1,0,"a","b"));
alert(tab); //1,a,b,4,5
Opérations sur les tableaux
Trier ou inverser l’ordre des éléments d’un tableau
Les bases de JavaScript – Manipuler les Tableaux
tab. reverse();
alert(tab); //Affiche: 5,4,3,2,1
tab. sort();
alert(tab); //Affiche: 1,2,3,4,5
Les bases de JavaScript – Manipuler les chaines de
caractères
String est un mot anglais qui signifie "chaîne", il s'agit en fait de chaîne de
caractères.
Les chaînes de caractères sont utiles pour représenter des données
textuelles. Les opérations les plus fréquentes qui concernent les chaînes de
caractères sont : la vérification de leur longueur( [Link] ), la
concaténation de plusieurs chaînes grâce aux opérateurs + et +=, étudier
la présence et la position de fragments de chaînes avec les méthodes
indexOf et substring.
Pour créer une chaîne de caractères, on utilise généralement cette syntaxe :
L'objet Date permet de travailler avec toutes les variables qui concernent les
dates et la gestion du temps. Il s'agit d'un objet inclus de façon native dans
Javascript, et que l'on peut toujours utiliser.
L'objet Date nous fournit un grand nombre de méthodes pour lire ou écrire
une date. Il y en a d'ailleurs tellement que nous n'allons en voir qu'une infime
partie.
Forme littérale
JavaScript permet de définir une expression régulière sous forme littérale par
l’intermédiaire du symbole "/". Cette définition comporte deux parties :
l’expression proprement dite et les propriétés relatives à son application.
Il existe deux propriétés relatives à l’application des expressions régulières :
› La valeur g: qui spécifie que toutes les occurrences dans la chaîne doivent être
utilisées. Si elle n’est pas spécifiée, seule la première occurrence est utilisée.
›La valeur i: qui spécifie que la recherche n’est pas sensible à la casse.
var chaine = "Ceci est un
test"; var expression =
/test/gi;
var chaineCorrespond = [Link](chaine);
/* chaineCorrespond contient true puisque la chaîne correspond à l’expression régulière
*/
Syntaxe
Le tableau suivant récapitule les symboles utilisables pour les expressions
régulières.
Les bases de JavaScript – Les expressions régulières
Caractère Fonction
d’option
”” Aucune option définie.
16/02/2015
Syntaxe (suite)
Le tableau suivant récapitule les symboles utilisables pour les expressions
régulières.
Les caractères de positionnement
Méthodes utilisables
Nous nous intéressons dans cette section aux méthodes utilisables avec les
expressions régulières.
Méthod
Description
e
exec Retourne la première occurrence correspondant à l’expression régulière
dans la chaîne.
Détermine si des occurrences sont contenues dans la chaîne de caractères
test
en paramètre pour l’expression régulière.
Retourne les différentes sous-chaînes (sous forme de tableau) de caractères
match correspondant à l’expression régulière dans la chaîne de caractères initiale
Retourne la position de la première occurrence correspondant à l’expression
search régulière.
Exemples d’application:
La méthode test() La méthode exec()
Les bases de JavaScript – Les expressions régulières
var chaine = "Ceci est une chainevar chaine = "Ceci est une chaine de
de test"; var expression = /test test"; var expression = /test$/g; var
var retour =
sousChaines =
[Link](chaine); // retour
contient la valeur true chaine =[Link](chaine); //
"Ceci est une chaine de test."; sousChaines est un tableau
retour = [Link](chaine);contenant un seul élément, « test »
// retour contient désormais la valeur false
La méthode match() La méthode search()
var chaine = "Ceci est une chainevardechaine = "Ceci est une chaine de
test"; var expression = /chaine test"; var expression = /chaine|test/g;
var sousChaines = var position = chaine.
[Link](expression); /* search(expression);
// position contient la valeur 13
sousChaines est un tableau contenant
les valeurs « chaine » et « test » */
Les bases de JavaScript – Les Fonctions
Introduction
Les fonctions représentent le concept de base de la programmation
JavaScript afin de modulariser les traitements.
Nous verrons que les fonctions constituent la clé de voûte du développement
objet en JavaScript.
Le mot-clé function permet de mettre en œuvre les fonctions selon la
syntaxe suivante :
Identification de fonction
Le langage JavaScript n’utilise pas les signatures pour identifier les fonctions
et se fonde uniquement sur leurs noms. Ainsi, deux fonctions globales ou
d’un même objet possédant le même nom ne peuvent coexister avec ce
langage. enfaite l’interprétateur JavaScript utilise toujours celle qui a été
définie en dernier, ignorant toutes les précédentes.
function maFonction(parametre1, parametre2)
{ return parametre1+" - "+parametre2;
}
function maFonction(parametre1)
{ return parametre1;
}
var retour = maFonction("param1", "param2"); //
Affiche parametre1
16/02/2015
Les bases de JavaScript – Les Fonctions
function maFonction()
{ if( [Link]
== 1 ) { return
arguments[0];
}
if( [Link] == 2 ) {
return arguments[0]+" - "+arguments[1];
}
}
JavaScript met à disposition la liste des arguments passés à une fonction
dans une variable particulière. Nommée arguments, cette variable est
implicitement définie pour chaque fonction. Le développeur peut donc
l’utiliser directement dans le code des fonctions.
Cette fonctionnalité de JavaScript permet de supporter plusieurs signatures
de méthodes et ainsi de contourner le problème lié au nombre d'arguments.
Les bases de JavaScript – Les Fonctions
var nombresTab = [5, 6, 2, 3, 7]; Var v1=2; Var v2=34; Var v4=7;
var v = [Link](this, var v = [Link](this,
nombres); v1,v2,v3);
› La méthode apply() appelle une fonction en lui passant une valeur this et
des arguments sous forme d'un tableau (ou d'un objet semblable à un
tableau).
› La méthode call() réalise un appel à une fonction avec une valeur this et
les arguments fournis individuellement.
16/02/2015
Les bases de JavaScript –
Les Closures
Définition
En rapport avec les fonctions JavaScript propose d'autres fonctionnalités
permettent le support des Closures.
Une closure est une fonction JavaScript particulière, qui utilise directement
des variables définies en dehors de la portée de son code. Ce mécanisme est
souvent utilisé par des fonctions définies dans d’autres fonctions, comme
l’illustre le code suivant :
function uneFonction(parametre)
{ function
uneClosure(unAutreParametre) {
return "Les paramètres sont: "
+parametre+", "+ unAutreParametre;
}
return uneClosure;
}
var retour = uneFonction("Mon
paramètre"); var valeurRetour =
Les bases de JavaScript – Gestion des exceptions
retour("Mon autre paramètre");
// valeurRetour contient « Les paramètres sont: Mon paramètre, Mon autre
paramètre »
Introduction
La gestion des anomalies d’exécution est un aspect très important de la
programmation. Une approche méthodique à ce sujet de la part des
développeurs permet d’obtenir du code plus robuste et lisible à la fois.
Dans le contexte des langages de programmation, un système de gestion
d’exceptions permet de gérer les conditions exceptionnelles pendant
l’exécution du programme. Lorsqu’une exception se produit, l’exécution
normale du programme est interrompue et l’exception est traitée.
Erreurs et exceptions
Une erreur est une anomalie de fonctionnement, une condition imprévue
durant l’exécution d’un programme, qui rend impossible sa continuation et
demande que des actions soient entreprises pour réparer la défaillance,
comme par exemple :
Les bases de JavaScript – Gestion des exceptions
– une division par zéro ;
– une tentative d’ouvrir un fichier qui n’existe pas ;
– l’utilisation d’une référence nulle pour accéder à un objet.
Tout programme en exécution peut être sujet à des conditions qui pourraient,
si non gérées, provoquer des erreurs. Ces conditions, en elles mêmes, ne
sont pas des bugs, mais des conditions particulières (exceptions) dans le
déroulement normal d’une partie d’un programme. Tel l’impossibilité
d’ouvrir un fichier.
Attraper les exceptions
JavaScript offre la même syntaxe que Java pour gérer les exceptions, au
moyen des mots clés try, catch et finally. Le premier définit le bloc
d’interception des exceptions, le second les traitements à réaliser en cas de
levée d’exceptions et le dernier les traitements à exécuter, que des
exceptions soient levées ou non.
Les bases de JavaScript – Gestion des exceptions
Le code suivant décrit la façon de gérer les exceptions (nous faisons
volontairement appel à une méthode testException inexistante afin de
déclencher une exception) :
try { testException(); //Cette méthode
est inexistante!
} catch(error) {
alert("Une exception a été levée");
alert("Nom de l’exception levée :
"+[Link]); alert("Message de l’exception
levée : "+[Link]);
} finally {
alert("Passage dans finally");
}
Les bases de JavaScript –
la Programmation Orientée Objet
Le langage JavaScript offre la possibilité de mettre en œuvre la plupart des
concepts objet, tels que l’héritage et le polymorphisme. Les développeurs
peuvent tirer parti de ces mécanismes pour augmenter la qualité, la lisibilité
et la modularité de leurs applications JavaScript.
La façon de mettre en œuvre les concepts objet est spécifique à ce langage,
et est essentiellement fondée sur les fonctions et closures de JavaScript.
16/02/2015
Les bases de JavaScript –
POO: Concepts généraux
Classes et objets: Le concept central de la programmation objet est la
classe. Composée d’attributs et de méthodes, ces derniers permettent de
définir respectivement les états et les comportements de la classe.
16/02/2015
Les bases de JavaScript –
POO: et JavaScript
En résumé
Nous avons décrit dans cette section les principaux concepts de la
programmation orientée objet.
Le langage JavaScript n’est pas un langage orienté objet , mais il
permet néanmoins de mettre en œuvre quelques concepts décrits au cours
des sections précédentes.
Les bases de JavaScript –
POO: et JavaScript
Mot clé this
Le mot clé this est également important dans la mise en œuvre de la
programmation orientée objet en JavaScript. Il est utilisé dans une méthode
afin de référencer l'instance sur laquelle est exécutée cette méthode. Il faut
néanmoins faire attention lorsque l'on utilise this dans une fonction qui n'est
pas rattachée à un objet car soit une erreur se produit ou des champs
possèdent des valeurs non définies. L'exemple suivant illustre la mise en
œuvre de ce mot clé:
16/02/2015
Les bases de JavaScript –
var maFonction = function() {
alert("attribut: " + [Link]);
};
maFonction(); // Affiche la valeur undefined car [Link] ne peut
être résolu
// Création de l'objet obj1 et affectation de
maFonction var obj1 = { attribut: "valeur1",
methode: maFonction
}
[Link](); // Affiche la valeur de attribut, à
savoir valeur1 // Création de l'objet obj2 et affectation
de maFonction var obj2 = { attribut: "valeur2",
methode: maFonction
}
[Link](); // Affiche la valeur de attribut2, à savoir valeur2
Les bases de JavaScript – POO: Structures des objets
avec JavaScript
Structure simple
En JavaScript, le mot clé new peut être utilisé en se fondant sur une fonction
afin d'initialiser un objet. L'initialisation est réalisée en utilisant les éléments
contenus dans la fonction, ces derniers peuvent être aussi bien des
attributs que des méthodes. Le code suivant illustre la mise en œuvre
d'une classe JavaScript en utilisant ce principe:
function MaClasse(parametre1, parametre2) {
this.attribut1 = parametre1;
this.attribut2 = parametre2;
[Link] = function() {
alert("Attributs: " + this.attribut1 + ", " + this.attribut2);
}
}
var obj = new MaClasse("valeur1", "valeur2");
alert("Attribut1: " + obj.attribut1); // Affiche la valeur de l'attribut
attribut1 [Link](); // Affiche la chaîne de caractères contenant les
valeurs des attributs
Prototypage
function MaClasse(parametre1, parametre2) {
this.attribut1 = parametre1;
this.attribut2 = parametre2;
16/02/2015
Les bases de JavaScript – POO: Structures des objets
avec JavaScript
}
[Link] =
{ methode: function() {
alert("Attributs: " + this.attribut1 + ", " + this.attribut2);
}
}
var obj = new MaClasse("valeur1", "valeur2");
alert("Attribut1: " + obj.attribut1); // Affiche la valeur de l'attribut
attribut1 [Link](); // Affiche la chaîne de caractères contenant les
valeurs des attributs
Le prototypage correspond à spécifier une sorte de modèle indépendamment du
constructeur afin d'initialiser chaque objet à sa création. Comme nous l'avons
mentionné rapidement précédemment, la spécification de ce modèle se réalise en
se fondant sur la propriété prototype de la classe Function.
Il convient donc ainsi de toujours de créer une fonction constructeur comme
précédemment afin de définir une classe. Cependant, contrairement à l'approche
précédente, les éléments de la classe ne sont plus tous définis dans cette
fonction.
Le code suivant illustre l'adaptation de la classe MaClasse précédemment mise
en œuvre en se fondant sur le prototypage:
Combinaison des deux approches
Dans cette approche, l'initialisation de la propriété prototype est réalisée dans le
code du constructeur de la classe, ceci offrant la possibilité d'avoir accès à toutes
16/02/2015
Les bases de JavaScript – POO: Structures des objets
avec JavaScript
les variables et méthodes de cette fonction particulière. Par contre, les principes
décris dans les différentes approches restent vrais. Les méthodes définies
directement dans le constructeur seront dupliquées alors que celles positionnées
sur le prototype non.
Le seul point subtil de cette approche est de forcer la propriété prototype à n'être
initialisée qu'une seule et unique fois la première fois que le constructeur est
appelé. Pour ce faire, il suffit d'ajouter une propriété personnalisée directement
sur le constructeur de la manière suivante:
function MaClasse() { [Link] =
"valeur"; if( typeof [Link]
== "undefined" )
{ [Link] =
function() { alert("Attribut: " +
[Link]);
};
[Link] = true;
}
}
var obj = new MaClasse();
alert([Link]); // Affiche la valeur de l'attribut attribut
[Link]();// Fonctionne correctement car la méthode a été ajoutée au
prototype
16/02/2015
16/02/2015