Fermeture lexicale (closure)
●
Fonction définie au sein d'une autre fonction
Ο
La fonction interne (inner) à accès au contexte de la
fonction externe (outer)
●
Brise le principe de portée habituel
Ο
Déjà vu avec la fonction constructeur d'un objet ;-)
●
Les fonctions méthodes ont accès aux variables this.*
●
La fonction externe renvoie une référence sur la
fonction interne
Ο
Autrement dit, la fonction renvoie une fonction en tenant
compte d'un contexte préétablit
Closure : exemple de la TVA
function
setTVA(_tva) {
const _rate = _tva / 100.0;
function
apply(_price) {
return
_price * (1 + _rate);
}
return
apply; // retourne une référence sur la fonction apply
}
var TTCconso = setTVA(19.6); //TVA des produits de consommation
var TTCculture = setTVA(7.7); //TVA des produits culturels
//Me voilà avec 2 fonctions parfaitement intelligibles,
// au lieu d'une seule fonction à 2 paramètres (la catégorie, le taux)
var totalPanier = TTCconso(109.56) + TTCconso(25.0) + TTCculture(24.3);
window.alert('Vous devez payer :' + totalPanier + ' euros');
JavaScript coté
Client Web
Inclusion dans un document
●
Inclusion directe
●
Inclusion comme fichier externe
<html>
<head>
<script type="text/javascript">
//ici votre code JS
</script>
</head>
<body>...<body>
</html>
<html>
<head>
<script type="text/javascript" src="./essai.js"></script>
</head>
<body>...<body>
</html>
Extension au noyau JS
●
Classes d'objets BOM
Ο
Window, Navigator, Screen, History, Location, ...
●
Classes d'objets DOM
Ο
DOM Document, DOM Elements, DOM Attributes, DOM
Events, ...
●
Classes d'objets HTML
Ο
<a>, <area>, <base>, <button>, <form>, <iframe>, <image>,
<input> (et ses variantes), <link>, <meta>, <object>,
<option>, <select>, <style>, <table>, <td>, <th>, <tr>,
<textarea>
Browser Object Model (BOM)
Window
(fenêtre/onglet courant)
Window
(fenêtre/onglet courant)
location
location document
document history
history navigator
navigator screen
screen
●
Permet de manipuler le navigateur
Ο
Tous les navigateurs (IE, Firefox, Chrome, ...) sont des
logiciels qui offrent les mêmes fonctionnalités de base
●
Ouvrir/fermer des onglets, aller à une URL, mémoriser la
liste des URL précédemment consultées, etc.
●
Arborescence d'objets
DOM
Chaque objet
possède ses
propriétés et
méthodes