Namespaces in JavaScript Part II

Entsprechend der Kommentare, hier noch kurz eine Variante der Namespace Registrierung ohne die Verwendung von eval

// ensure Namespace and Manager objects
if (typeof Namespace == 'undefined') var Namespace = {};
if (!Namespace.Manager) Namespace.Manager = {};
// create a JSON object
Namespace.Manager = {
    // define register method
  Register : function(name)
  {
    var ns = name.split('.'), o = window, i, len;
    for(i = 0, len = ns.length; i < len; i++)
    {
        o = o[ns[ i ]] = o[ns[ i ]] || {};
    }
    return o;
    }};
 
 

Diese Variante verwende ich aktuell auch in meinen Projekten, die Eval Variante war wirklich etwas unschön! xD

DotNetKicks-DE Image
Published Mittwoch, 30. März 2011 15:05 von ThorstenHans
Abgelegt unter:

Kommentare

# re: Namespaces in JavaScript Part II

Mittwoch, 30. März 2011 17:07 von Jhon Doe

"if (!Namespace.Manager) Namespace.Manager = {};" brauchst du (glaub' ich) nicht, da "Namespace.Manager  = {}" von der danachfolgenden Zuweisung mit dem JSON-Objekt überschrieben wird.

# re: Namespaces in JavaScript Part II

Mittwoch, 30. März 2011 22:05 von John Doe

Außerdem, warum wird die Exisitenz auf zwei verschiedenen Wegen überprüft: "typeof _ == 'undefined'" vs. "!_" ?

Ist der zweite Weg nicht gefährlich, wenn "Namespace.Manager = false" ist?

Kommentar abgeben

(verpflichtend) 
(verpflichtend) 
(optional)
(verpflichtend)