2010-10-12 4 views
1

Salut Il est bon de créer un objet global unique qui enveloppent les fonctions et propriétés dans cette object.I chercher beaucoup d'exemples de code et voir code comme ceciComment définir un nouvel objet global en javascript

if(!myglobalObject) myglobalObject ={}; 

Cependant, ce code ne fonctionne pas, je suis une erreur en disant ReferenceError: myglobalObject n'est pas défini quelqu'un peut-il faire la lumière sur la raison pour laquelle je suis l'erreur?

Répondre

2

Pour éviter des erreurs dans ECMAScript 5 mode strict, vous besoin d'utiliser var pour définir toutes les variables:

if (typeof myglobalObject == "undefined") { 
    var myglobalObject = {}; 
} 

L'autre alternative est d'attribuer une propriété à l'objet global:

// The following line gets you a global object in any ECMAScript 
// environment, so long as it runs in the global scope. In browsers, 
// you could just use window. 
var globalObj = this; 
if (typeof globalObj.myglobalObject == "undefined") { 
    globalObj.myglobalObject = {}; 
} 
+0

En parlant de mode strict, 'globalObj' dans le second snippet va évaluer' undefined' ... en mode strict. Donc 'var globalObj = this' (à partir du code global) pourrait être une meilleure option. – kangax

+0

@kangax: Bon point. Je vais modifier. –

0

if (window['myglobalObject'] === undefined) window.myglobalObject = {};

Si vous ne voulez pas exposer votre objet à partir du contexte que vous pouvez faire qch comme ceci:

var myglobalObject = myglobalObject || {};

2
if (typeof myglobalObject === 'undefined') var myglobalObject = {}; 
+0

Affectation à une variable non déclarée (comme vous le faites ici) provoque une erreur dans ECMAScript 5 mode strict. Utilisez une instruction 'var' à la place. –

+0

Bon point, édité. –

Questions connexes