[ascoders] AW: Re: Namensräume

Stimmt. Die gesamte Funktionalität in _global.ASNamespace unterzubringen
statt in einzelnen Funktionen ist auch besser.
Aber warum auf eine Methode ASNamespace.selectPackage() verzichten? Sonst
hat man keine Kontrolle über die Auswahl gleichnamiger Klassen in
verschiedenen Packages - bzw. nur durch direkte Referenz wie in deinem
Beispiel die de.ascoders.StandardClass.

Andreas


> -----Ursprüngliche Nachricht-----
> Von: ascoders-bounce@xxxxxxxxxxxxx
> [mailto:ascoders-bounce@xxxxxxxxxxxxx]Im Auftrag von Ralf Siegel
> Gesendet: Donnerstag, 27. März 2003 17:31
> An: ascoders@xxxxxxxxxxxxx
> Betreff: [ascoders] Re: Namensräume
>
>
>
> >hab das jetzt mal zusammengebaut. Es wird jetzt doch NUR in den
> aktivierten
> >Namensräumen gesucht - denke, das ist näher am Java-Verhalten, wo ja auch
> >nur importierte Packages durchsucht werden.
>
> Yup, ich denke es wäre sogar intuitiver, das in einem Ruck zu
> machen, d.h.
> wenn der Pfad gebastelt wird, diesen gleich komplett in der Liste zu
> registrieren, e.g.
>
> ...
>
> if (o[name] == undefined) {
>          o[name] = new Object();
>          this.push(o[name]);
>          ASSetPropFlags(o, name, 1, 0); // optional
> }
>
> ...
>
> Oder komplett dann:
>
> __________________________________________________________________
>
> /////////////////////////////////////////////////
> // ASNamespace Setup
> /////////////////////////////////////////////////
>
> _global.__resolve = function(c) {
>          for (var i = 0; i < ASNamespace.length; i++) {
>                  if (typeof ASNamespace[i][c] == "function") {
>                          return ASNamespace[i][c];
>                  }
>          }
> };
>
> // ----------------------------------------------
> _global.ASNamespace = new Array();
>
> ASNamespace.initializePackage = function(path) {
>          // avoid calls when checking for object
>          var r = _global.__resolve;
>          delete _global.__resolve;
>
>          var a = path.split('.');
>          var o = _global;
>          var currentPath = a[0];
>          for (var i = 0; i < a.length; i++) {
>                  var name = a[i];
>                  if (o[name] == undefined) {
>                          o[name] = new Object();
>                          this.push(o[name]);
>                          ASSetPropFlags(o, name, 1, 0); // optional
>                  }
>                  o = o[name];
>          }
>          _global.__resolve = r;
>          return o; // return shortcut
> };
>
> ASSetPropFlags(_global, "ASNamespace", 7, 0);
>
> /////////////////////////////////////////////////
> // Usage
> /////////////////////////////////////////////////
>
> var ns = ASNamespace.initializePackage("com.macromedia.secret");
>
> _global.com.macromedia.secret.BetaClass = function() {
>          trace("com.macromedia.secret.BetaClass");
> };
>
> _global.com.macromedia.StandardClass = function() {
>          trace("com.macromedia.StandardClass");
> };
>
> // ----------------------------------------------
>
> var ns = ASNamespace.initializePackage("de.ascoders.central");
>
> _global.de.ascoders.central.RIAManager = function() {
>          trace("de.ascoders.central.RIAManager");
> };
> _global.de.ascoders.StandardClass = function(x) {
>          trace("de.ascoders.StandardClass");
> };
>
> // ----------------------------------------------
>
> obj1 = new BetaClass();
> obj2 = new com.macromedia.BetaClass(); // not found
> obj3 = new StandardClass();
>
> obj4 = new de.ascoders.StandardClass();
> obj5 = new de.ascoders.central.RIAManager();
> obj6 = new RIAManager();
>
>
> ______________________________________________________________
>
> Ausgabe
> ______________________________________________________________
>
> /*
>
> com.macromedia.secret.BetaClass
> com.macromedia.StandardClass
> de.ascoders.StandardClass
> de.ascoders.central.RIAManager
> de.ascoders.central.RIAManager
>
> */
>
> ralf ...
>
>
> ------------------------------------------------------
> Archiv   : http://www.freelists.org/archives/ascoders/
> Optionen : http://www.freelists.org/list/ascoders
> ------------------------------------------------------

------------------------------------------------------
Archiv   : http://www.freelists.org/archives/ascoders/
Optionen : http://www.freelists.org/list/ascoders
------------------------------------------------------

Other related posts: