Création d’Objet dans l’espace global J AVA S C R I P T (Programmation Internet) V O L . V I I I J.B. Dadet DIASOLUKA Luyalu Nzoyifuanga +243 - 851278216 - 899508675 - 991239212 - 902263541 - 813572818 CHAPITRE 15 : Comment créer un objet dans l’espace globale ? « window » (donc l’environnement global) est l’objet par défaut (c’està-dire quand un autre n’est pas spécifié en préfixe devant le nom d’une propriété ou méthode) quand on accède à des propriétés et méthodes d’objet. De plus, un élément dans l’espace global est accessible (visible) de partout, sauf si ombrage c’est-à-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 ). L’environnement global qui sera notre « target » s’appelle soit « window » soit « global » selon le navigateur mais plus selon le système d’exploitation. Pour adjoindre une propriété à l’environnement global, il convient donc par exemple de tester si « window » est défini ou pas. S’il est défini, alors l’environnement global s’appelle probablement / vraisemblablement « window ». Allons-y donc : <script type="text/javascript"> "use strict"; Object.defineProperty( J.D.B. DIASOLUKA Nz. Luyalu JavaScript Tome-VIII 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 « WINDOW ») VS VARIABLES LOCALES : Un objet ou une variable globale sont des propriétés de l’objet global par excellence window. Quel que soit l’endroit où 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 l’espace global (en dehors de toute définition de fonction), il n’est pas nécessaire de spécifier l’espace globale avec le préfixe « window. » (le mot window tout en minuscules suivi d’un point). Tout objet ou fonction ou variable défini dans l’espace global appartient à l’objet global window : <script type="text/javascript"> "use strict"; const cl=console.log, gVar = "nFct"; Création Objet espace global -2/14- mardi, 21. mai 2019 (8:35 ) J.D.B. DIASOLUKA Nz. Luyalu JavaScript Tome-VIII 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]); cl(self[gVar]); cl(window[gVar]); // ƒ nFct() { cl("Hello"); } // ƒ nFct() { cl("Hello"); } // ƒ nFct() { cl("Hello"); } // Notez ci-dessous l'absence de guillemets. nFct(); // Hello eval(gVar)(); // Hello this["nFct"](); self["nFct"](); window["nFct"](); window.nFct(); this[gVar](); self[gVar](); window[gVar](); window.eval(gVar)(); </script> // // // // Hello Hello Hello Hello // // // // Hello Hello Hello Hello Dans un environnement non global (dans une fonction par exemple) pour accéder aux objets globaux (donc ceux appartement à l’objet global « window », il faut nécessairement le spécifier avec la notation édictée ci-dessus, « window. » (donc le terme window suivi d’un point) en préfixe comme d’habitude quand on doit accéder aux propriétés (et méthodes) de n’importe quel objet. Création Objet espace global -3/14- mardi, 21. mai 2019 (8:35 ) J.D.B. DIASOLUKA Nz. Luyalu JavaScript Tome-VIII 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}.`); Création Objet espace global -4/14- mardi, 21. mai 2019 (8:35 ) J.D.B. DIASOLUKA Nz. Luyalu JavaScript Tome-VIII // 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: Création Objet espace global -5/14- mardi, 21. mai 2019 (8:35 ) J.D.B. DIASOLUKA Nz. Luyalu // JavaScript Tome-VIII lLocale is not defined window.locWinV = "Variable globale (window) dans fct"; window.locWinL = "Let globale (window) dans fct"; var vLocale= "Variable locale dans fct"; let lLocale= "Let locale dans fct"; console.log(`dirWinV = ${dirWinV}.`); // dirWinV = Variable globale (window) directe. console.log(`dirWinL = ${dirWinL}.`); // dirWinL = Let globale (window) directe. console.log(`locWinV = ${locWinV}.`); // locWinV = Variable globale (window) dans fct. console.log(`locWinL = ${locWinL}.`); // locWinL = Let globale (window) dans fct. console.log(`vLocale = ${vLocale}.`); // vLocale = Variable locale dans fct. console.log(`lLocale = ${lLocale}.`); // lLocale = Let locale dans fct. } </script> Création Objet espace global -6/14- mardi, 21. mai 2019 (8:35 ) J.D.B. DIASOLUKA Nz. Luyalu JavaScript Tome-VIII Et cette version : <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). Création Objet espace global -7/14- mardi, 21. mai 2019 (8:35 ) J.D.B. DIASOLUKA Nz. Luyalu JavaScript Tome-VIII /* 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}.`); // 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(){ Création Objet espace global -8/14- mardi, 21. mai 2019 (8:35 ) J.D.B. DIASOLUKA Nz. Luyalu JavaScript Tome-VIII console.log(`dirWinV = ${dirWinV}.`); // dirWinV = Variable globale (window) directe. /* console.log(`dirWinL = ${dirWinL}.`); // ReferenceError: // can't access lexical declaration // `dirWinL' before initialization. */ /* 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: lLocale is not defined window.locWinV = "Variable globale (window) dans fct"; window.locWinL = "Let globale (window) dans fct"; /*** Définitions de variables locales ***/ var dirWinV= "Variable locale dans fct"; let dirWinL= "Let locale dans fct"; var vLocale= dirWinV; let lLocale= dirWinL; /*** Fin définition de variables locales ***/ console.log(`dirWinV = ${dirWinV}.`); Création Objet espace global -9/14- mardi, 21. mai 2019 (8:35 ) J.D.B. DIASOLUKA Nz. Luyalu // JavaScript Tome-VIII dirWinV = Variable globale (window) directe. console.log(`dirWinL = ${dirWinL}.`); // dirWinL = Let globale (window) directe. console.log(`locWinV = ${locWinV}.`); // locWinV = Variable globale (window) dans fct. console.log(`locWinL = ${locWinL}.`); // locWinL = Let globale (window) dans fct. console.log(`vLocale = ${vLocale}.`); // vLocale = Variable locale dans fct. console.log(`lLocale = ${lLocale}.`); // lLocale = Let locale dans fct. } </script> Création Objet espace global -10/14- mardi, 21. mai 2019 (8:35 ) J.D.B. DIASOLUKA Nz. Luyalu JavaScript Tome-VIII Kinshasa, le mardi 21 mai 2019 - 8:35:03 PM Mots-clés : environnement global , objet par défaut , propriété , méthode , contexte lexical , defineProperty , defineProperties , enumerable, configurable , writable , VARIABLES GLOBALES , VARIABLES LOCALES , objets globaux , définition de fonction , objet window , JAVASCRIPT, Programmation Internet, keys, values, parseInt, parseFloat, toString, fonction fléchée, sloppy mode, mode strict, prototype, objet ordinaire, objet exotique, objet standard, built-in object, Scope, contexte d’exécution, Domaine, Portée, Étendue, Visibilité, Accessibilité, durée de vie, Es10, ECMASCRIPT 2019, LiveScript, extra-dimensionnels, entités éthériques non-biologiques, TC39, ECMA, Kaprekar Création Objet espace global -11/14- mardi, 21. mai 2019 (8:35 ) J.D.B. DIASOLUKA Nz. Luyalu JavaScript Tome-VIII DIASOLUKA Nz. Luyalu Docteur en Médecine, Chirurgie & Accouchements (1977), CNOM : 0866 - Spécialiste en ophtalmologie (1980) Études humanités : Scientifique - Mathématiques & Physique. Informaticien-amateur, Programmeur et WebMaster. Chercheur indépendant, autonome et autofinancé, bénévole, sans aucun conflit d’intérêt ou liens d'intérêts ou contrainte promotionnelle avec qui qu’il soit ou quelqu’organisme ou institution / organisation que ce soit, étatique, paraétatique ou privé, industriel ou commercial en relation avec le sujet présenté. +243 - 851278216 - 899508675 - 991239212 - 902263541 - 813572818 [email protected] Autre Lecture : https://www.scribd.com/document/374738470/Le-Plus-Grand-Secret-de-LaCreation D’autres publications pouvant aussi intéresser : • https://www.scribd.com/document/377036251/LeDosage-Des-Medicaments-en-Cac-Cas • https://www.scribd.com/document/377035454/LeHasard-Des-Thermometres-Non-contact-a-Infrarouge • https://www.scribd.com/document/376222482/PetiteCréation Objet espace global -12/14- mardi, 21. mai 2019 (8:35 ) J.D.B. DIASOLUKA Nz. Luyalu JavaScript Tome-VIII Introduction-Aux-Fonctions-JavaScript • https://www.scribd.com/document/376221919/La-Foien-Jesus-Christ-Pour-Quoi-Faire • https://www.scribd.com/document/375689778/Lacuitevisuelle-angulaire • https://www.scribd.com/document/375349851/Lavariable-This • https://www.scribd.com/document/375024162/FonctionsImbriquees-en-JS • https://www.scribd.com/document/374789297/FormatInterne-Des-Objets-JavaScript • https://www.scribd.com/document/374788758/Iterationsen-JavaScript • https://www.scribd.com/document/374738470/Le-PlusGrand-Secret-de-La-Creation • https://www.scribd.com/document/374597969/NouvelleFormule-d-IMC-indice-de-doduite-Selon-Dr-Diasoluka • https://www.scribd.com/document/373847209/PropertyDescriptors • https://www.scribd.com/document/373833282/l-ObjetGlobal-Window • https://www.scribd.com/document/372665249/JavascriptTome-II • https://www.scribd.com/document/355291488/motiliteoculaire-2 • https://www.scribd.com/document/355291239/motiliteCréation Objet espace global -13/14- mardi, 21. mai 2019 (8:35 ) J.D.B. DIASOLUKA Nz. Luyalu JavaScript Tome-VIII oculaire-I • https://www.scribd.com/document/355290248/Script-dAnalyses-Des-Reflexes-Pupillomoteurs • https://www.scribd.com/document/321168468/Renseigne ments-Id-et-Anthropometriques • https://www.scribd.com/document/320856721/Emission31-Jul-2016 • https://www.scribd.com/document/318182982/Complicati on-Visuelle-du-Traitement-de-La-Malaria • https://www.scribd.com/document/318180637/RapportEntre-Oxymetrie-Et-Type-Respiration • https://www.scribd.com/document/315746265/Classificati on-Des-Medicaments • https://www.scribd.com/document/315745909/Incongruen ces-Heresies-et-Heterodoxies-de-la-Notion-deLaboratoire • https://www.scribd.com/document/315745725/RapportEntre-Oxymetrie-Et-Type-Respiration Création Objet espace global -14/14- mardi, 21. mai 2019 (8:35 )