Partie 3 JS
Partie 3 JS
1. Introduction
o Présentation du langage JavaScript et de son rôle sur le web
o Objectifs du cours et aperçu des concepts avancés
2. Fonctions Avancées
2.1. Closures
- Définition et utilité
- Exemple pas à pas
2.2. Fonctions de rappel (Callbacks)
- Concept et avantages
- Exemple détaillé
2.3. Fonctions récursives
- Principe de la récursion
- Exemple avec le calcul d’une factorielle
3. Programmation Asynchrone
3.1. Utilisation de setTimeout et setInterval
- Fonctionnement et cas d’usage
- Exemples pratiques
3.2. Promesses (Promise)
- Structure d’une promesse
- Chaînage avec then, catch et finally
- Exemple illustré
3.3. Async/Await
- Syntaxe et avantages par rapport aux promesses
- Exemple avec gestion d’erreur via try...catch
4. Gestion des Erreurs
4.1. Le Bloc try...catch
- Principe et utilisation
- Exemple concret
4.2. Gestion des erreurs dans les Promesses et Async/Await
- Différentes stratégies de capture des erreurs
- Exemples en contexte asynchrone
5. Manipulation Avancée des Objets
5.1. Prototypes et Héritage
- Concepts de base et exemples d’héritage
5.2. Méthodes Statique et d’Instance
- Différences et exemples d’implémentation dans une classe
5.3. Utilisation de Object.create, Object.assign et Object.defineProperty
- Description et exemples de chaque méthode
Introduction
JavaScript est un langage de programmation utilisé principalement pour créer des
interactions sur les sites web, comprendre les notions avancées permettra de mieux organiser
le code et d’aborder des sujets comme l’asynchrone ou l’héritage. Nous allons explorer :
1. Fonctions Avancées
1.1. Les Closures
Concept :
Une closure est une fonction qui « se souvient » de l’environnement dans lequel elle a été
créée, même après que la fonction parente ait terminé son exécution.
Cela signifie que la fonction interne continue d’avoir accès aux variables de la fonction
externe.
Explication :
Concept :
Une fonction de rappel est une fonction que l’on passe en argument à une autre fonction, pour
qu’elle soit exécutée à un moment précis (souvent après la fin d’un traitement).
Exemple
Explication :
1. greet prend deux paramètres : une chaîne de caractères (name) et une fonction
(callback).
2. Elle affiche « Bonjour » suivi du nom.
3. Ensuite, elle exécute la fonction de rappel, ici sayGoodbye, qui affiche « Au revoir ! ».
Concept :
Une fonction récursive s’appelle elle-même pour résoudre un problème en le décomposant en
sous-problèmes plus simples.
Pour résoudre des problèmes qui se définissent de manière récursive (par exemple, calculer
une factorielle, parcourir des structures de données comme les arbres).
1. La fonction factorielle vérifie d’abord si n vaut 0. Dans ce cas, elle retourne 1 (cas
de base qui arrête la récursion).
2. Sinon, elle retourne n multiplié par le résultat de factorielle(n-1).
3. Pour n = 5, le calcul se décompose ainsi :
o factorielle(5) = 5 * factorielle(4)
o factorielle(4) = 4 * factorielle(3)
o … et ainsi de suite jusqu’à factorielle(0).
2. Programmation Asynchrone
JavaScript est souvent utilisé dans des contextes où certaines opérations (comme récupérer
des données sur le web) prennent du temps. La programmation asynchrone permet d’exécuter
du code sans bloquer l’exécution globale.
setTimeout :
Permet d’exécuter une fonction après un certain délai.
Exemple :
Explication :
1. Le message "Début" s’affiche immédiatement.
2. setTimeout planifie l’exécution de la fonction anonyme après 2000 millisecondes (2
secondes).
3. "Fin" s’affiche avant le message retardé, montrant que le code continue de s’exécuter
pendant l’attente.
setInterval :
Similaire à setTimeout, mais exécute la fonction à intervalles réguliers.
Exemple :
Explication :
Concept :
Une promesse est un objet qui représente une opération asynchrone. Elle peut être dans l’un
des trois états :
En attente (pending)
Réussie (fulfilled)
Échouée (rejected)
Pour éviter des chaînes de callbacks et gérer le code asynchrone de manière plus lisible.
Exemple détaillé :
Explication pas à pas :
2.3. Async/Await
Concept :
Async/Await est une syntaxe introduite pour simplifier la gestion des promesses.
Exemple détaillé :
Explication pas à pas :
1. La fonction getData est déclarée avec async, ce qui permet d’utiliser await à
l’intérieur.
2. Le mot-clé await suspend l’exécution jusqu’à ce que la promesse soit résolue (ici,
après 2 secondes).
3. Le bloc try...catch est utilisé pour gérer d’éventuelles erreurs pendant l’exécution
asynchrone.
Concept :
try...catch permet d’essayer d’exécuter un bloc de code et, en cas d’erreur, d’exécuter un
autre bloc pour gérer cette erreur.
Exemple détaillé :
Explication :
Explication :
Dans les promesses, catch() est utilisé pour attraper et gérer les erreurs.
Avec async/await, on entoure l’appel avec try...catch pour capturer les erreurs de
la promesse rejetée.
Concept :
En JavaScript, presque tout est un objet. Les objets peuvent hériter des propriétés et méthodes
d’un autre objet via ce que l’on appelle le prototype.
L’héritage par prototype permet de partager des méthodes entre plusieurs objets sans les
dupliquer.
Exemple détaillé :
Explication :
1. La fonction Person sert de constructeur pour créer des objets avec un attribut name.
2. La méthode sayHello est ajoutée à Person.prototype, ce qui signifie que tous les
objets créés avec Person auront accès à cette méthode.
Concept :
Object.create :
Permet de créer un nouvel objet en utilisant un autre objet comme prototype.
Explication :
Object.assign :
Permet de copier les propriétés d’un ou plusieurs objets source dans un objet cible.
Explication :
Object.defineProperty :
Permet de définir une propriété avec des attributs précis (par exemple, si la propriété est
modifiable ou non).
Explication :
Ici, Object.defineProperty est utilisé pour créer une propriété prop avec une valeur
fixe (42) et pour contrôler ses attributs.
Conclusion
Ce cours nous a permis de découvrir des concepts avancés de JavaScript de manière détaillée :