Création d'objet dans l'espace globale Window - javascript tome viii

Création d’Objet dans l’espace global
JAVASCRIPT
(Programmation Internet)
VOL. VIII
J.B. Dadet DIASOLUKA Luyalu Nzoyifuanga
+243 - 851278216 - 899508675 - 991239212 - 902263541 - 813572818
CHAPITRE 15 : Comment créer un objet dans lespace globale ?
« window » (donc lenvironnement global) est lobjet par défaut (cest-
à-dire quand un autre nest pas spécifié en préfixe devant le nom dune
propriété ou méthode) quand on accède à des propriétés et méthodes
dobjet. De plus, un élément dans lespace global est accessible (visible)
de partout, sauf si ombrage cest-à-dire redéfini dans un contexte lexical
restreint / local.
La syntaxe globale pour adjoindre une nouvelle propriété à un objet pré-
existent est la suivante :
1. Pour définir une seule propriété:
Object . defineProperty ( target , key , desc)
2. Pour définir plusieurs propriété:s
Object . defineProperties ( target , descriptors ).
Lenvironnement global qui sera notre « target » s’appelle soit « win-
dow » soit « global » selon le navigateur mais plus selon le système
dexploitation.
Pour adjoindre une propriété à lenvironnement global, il convient donc
par exemple de tester si « window » est défini ou pas. Sil est défini,
alors lenvironnement global sappelle probablement / vraisemblable-
ment « window ». Allons-y donc :
<script type="text/javascript"> "use strict";
Object.defineProperty(
J.D.B. DIASOLUKA Nz. Luyalu
JavaScript Tome-VIII
Création Objet espace global -2/14- mardi, 21. mai 2019 (8:35 )
typeof global === "object" ? global : window ,
"NEW_CONST",
{
value: 676149.91310146,
enumerable: true,
writable: false,
configurable: false
}
)
console.log(NEW_CONST); // 676149.91310146
console.log(window . NEW_CONST); // 676149.91310146
console.log(this . NEW_CONST); // 676149.91310146
// console.log(global . NEW_CONST);
</script>
VARIABLES GLOBALES (PROPRIÉTÉS DE L’OBJET « WIN-
DOW ») VS VARIABLES LOCALES :
Un objet ou une variable globale sont des propriétés de lobjet
global par excellence window. Quel que soit lendroit vous
vous trouvez, vous pouvez TOUJOURS accéder aux objets globaux
via leur conteneur « window » (ou « this » ou « self »), comme
propriétés de celui-ci.
Dans lespace global (en dehors de toute définition de fonction), il
nest pas nécessaire de spécifier lespace globale avec le préfixe
« window. » (le mot window tout en minuscules suivi dun point).
Tout objet ou fonction ou variable défini dans lespace global ap-
partient à lobjet global window :
<script type="text/javascript"> "use strict";
const cl=console.log,
gVar = "nFct";
J.D.B. DIASOLUKA Nz. Luyalu
JavaScript Tome-VIII
Création Objet espace global -3/14- mardi, 21. mai 2019 (8:35 )
function nFct() { cl("Hello"); }
// Entités
cl(this); // Window
cl(self); // Window
cl(window); // Window
// Notez les guillemets
cl(this["nFct"]); // ƒ nFct() { cl("Hello"); }
cl(self["nFct"]); // ƒ nFct() { cl("Hello"); }
cl(window["nFct"]); // ƒ nFct() { cl("Hello"); }
cl(this[gVar]); // ƒ nFct() { cl("Hello"); }
cl(self[gVar]); // ƒ nFct() { cl("Hello"); }
cl(window[gVar]); // ƒ nFct() { cl("Hello"); }
// Notez ci-dessous l'absence de guillemets.
nFct(); // Hello
eval(gVar)(); // Hello
this["nFct"](); // Hello
self["nFct"](); // Hello
window["nFct"](); // Hello
window.nFct(); // Hello
this[gVar](); // Hello
self[gVar](); // Hello
window[gVar](); // Hello
window.eval(gVar)(); // Hello
</script>
Dans un environnement non global (dans une fonction par
exemple) pour accéder aux objets globaux (donc ceux apparte-
ment à lobjet global « window », il faut nécessairement le spé-
cifier avec la notation édictée ci-dessus, « window. » (donc le
terme window suivi dun point) en préfixe comme dhabitude
quand on doit accéder aux propriétés (et méthodes) de nimporte
quel objet.
J.D.B. DIASOLUKA Nz. Luyalu
JavaScript Tome-VIII
Création Objet espace global -4/14- mardi, 21. mai 2019 (8:35 )
Illustration dans un code.
Lisez les commentaires pour comprendre :
<script type = "text/javascript"> "use strict";
var dirWinV= "Variable globale (window) directe";
let dirWinL= "Let globale (window) directe";
console.log(`dirWinV = ${dirWinV}.`);
console.log(`dirWinL = ${dirWinL}.`);
// Ici, locWinV n'est pas encore définie.
/* console.log(`${locWinV} | ${locWinL}`);
// ReferenceError: locWinV is not defined */
// vLocale et lLocale sont des variables
// purement locales: Elles ne peuvent pas
// être affichées ici (en dehors de leur scope).
/* console.log(`vLocale = ${vLocale}.`);
// ReferenceError: vLocale is not defined */
/* console.log(`lLocale = ${lLocale}.`);
// ReferenceError: lLocale is not defined */
console.log("//** Appel de fct() **//");
// //** Appel de fct() **//
fct();
console.log("//** Fin Appel de fct() **//");
//** Fin Appel de fct() **//
console.log(`dirWinV = ${dirWinV}.`);
// dirWinV = Variable globale (window) directe.
console.log(`dirWinL = ${dirWinL}.`);
// dirWinL = Let globale (window) directe.
console.log(`locWinV = ${locWinV}.`);
J.D.B. DIASOLUKA Nz. Luyalu
JavaScript Tome-VIII
Création Objet espace global -5/14- mardi, 21. mai 2019 (8:35 )
// locWinV = Variable globale (window) dans fct.
console.log(`locWinL = ${locWinL}.`);
// locWinL = Let globale (window) dans fct.
// vLocale et lLocale sont des variables
// purement locales: Elles ne seront jamais
// accédées ici (en dehors de leur scope).
/* console.log(`vLocale = ${vLocale}.`);
// ReferenceError: vLocale is not defined */
/* console.log(`lLocale = ${lLocale}.`);
// ReferenceError: lLocale is not defined */
/***********************/
/***********************/
function fct(){
console.log(`dirWinV = ${dirWinV}.`);
// dirWinV = Variable globale (window) directe.
console.log(`dirWinL = ${dirWinL}.`);
// dirWinL = Let globale (window) directe.
/* console.log(`locWinV = ${locWinV}.`);
// ReferenceError: locWinV is not defined */
/* console.log(`locWinL = ${locWinL}.`);
// ReferenceError: locWinL is not defined */
console.log(`vLocale = ${vLocale}.`);
// vLocale = undefined.
/* console.log(`lLocale = ${lLocale}.`);
// Firefox :
// ReferenceError:
// can't access lexical declaration
// `lLocale' before initialization */
//
// Yandex :
// Uncaught ReferenceError:
1 / 14 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !