Modules créés au moyen d’objets C. Petitpierre
Objets construits sans constructeurs ( en Java on a introduit la réflexion pour cela ) var obj1 = { } obj1.nom = "uvw” // adjonction d'un attribut obj1.fct = function () { // adjonction d'une fonction alert(“X”) } obj1.fct() // appel d'une fonction de l’objet alert(obj1.attr) // affichage d'un attribut de l’objet
Objets construits sans constructeurs var obj1={ attr: 234, str: "abcd", fct: function () {this.attr=0} } obj1.nom = "uvw” // adjonction d'un attribut obj1.fct() // appel d'une fonction de l’objet alert(obj1.attr) // affichage d'un attribut de l’objet
Objets construits sans constructeurs ( tableau associatifs ) var obj2 = { "stroke-width": 5, "str": abcd2, "fct": function() {this.attr=0} } obj2[“background-color”] = “red" // tableau associatif var x = "fct" obj2[x]() // même sous forme de variable
Création de modules ( name space ) // Par convention, dans un fichier appelé graphic.js // pas d’interférences avec d’autres variables if (!graphic) var graphic = { } graphic.paramGlobal = 100 graphic.draw = function (el) { // dessin d’un élément } // utilisation dans n’importe quel fichier x = new Array(graphic.paramGlobal) graphic.draw(circle)
Test de l’existence d’une variable // Trois façons de tester l’existence d’une variable // seule la première instruction rencontrée crée l’objet if (!graphic) var graphic = { } var graphic = graphic || { } var graphic = graphic ? graphic : { }
Test de définition des variables // si pas de var yy try { alert(typeof yy == “undefined”) // true (et pas créée) alert(yy) // produit une exception alert(!yy) // produit une exception } catch (e) { alert (e) // variable indéfinie }
Variables en Javascript if (false) var zz = 88 // zz est créée globalement // quand le code est lu par le navigateur, // mais l’affectation n’est pas effectuée alert(zz) // “undefined”, mais existe var zz = 99 // redéfinition, mais même variable alert("zz = "+zz) // et même place que la première