2016-06-28 4 views
0

warum wir dies tun,Wie lange Modul Muster Namespace

var a = 1, 
    b = 2, 
    c = a + b; 

entkommen, aber wir dies nicht in Modulmuster,

var example = example || {}; 
example.UI = { 
     a : 1, 
     b : 2, 
     c : a + b // this is not possible unless I use "this" or full name example.UI.a/b 
}; 

Warum müssen wir tun müssen verwenden „dieses“ oder "full-Namensraum" innerhalb example.UI zu erhalten Eigenschaften sibiling ...

Es wird wirklich schwierig vollständigen Namen sapces zu verwenden ...

+1

Ihre 'c: a + b 'kann nicht durch die Einführung von' this' gemacht werden, um zu arbeiten, wie Der Wert von 'this' hat nichts mit Objektinitialisiererausdrücken zu tun. – Pointy

+1

Für den "Warum" -Teil: prozedural zuweisen eine Reihe von Variablen und erstellen ein Objekt Literal sind in der Tat zwei verschiedene Dinge. – deceze

+0

@deceze wie Menschen lange Namensraumproblem mit Modulmuster dann überwinden? – Mathematics

Antwort

1

, weil in Ihrem zweiten Beispiel ab und c nicht definiert sind! was Sie haben, ist eigentlich definiert example.UI.aexample.UI.b und example.UI.c so in einer Art und Weise:

example.UI = { 
     a : 1, 
     b : 2, 
     c : 3 
}; 

gleich

example.UI.a=1, 
example.UI.b=2, 
example.UI.c=3,