[ascoders] AW: Namensräume
- From: "Andreas Hucks" <andreas@xxxxxxxxxxxx>
- To: <ascoders@xxxxxxxxxxxxx>
- Date: Thu, 27 Mar 2003 00:28:31 +0100
Hallo,
> Was denkt ihr?
Großartige Idee. Mein Ansatz (Erklärung unten):
----------------------------------------------------------------------------
-------------------
_global.Namespaces = new Object();
_global.AsSetupPackage = function(path) {
var a = path.split('.');
var o = _global;
for (var i = 0; i < a.length; i++) {
var name = a[i];
if (o[name] == undefined) {
o[name] = new Object();
}
o = o[name];
}
Namespaces[path] = o;
}
_global.__resolve = function(c) {
var nameSpaceFound = false;
for (tmpNS in Namespaces) {
if (typeof Namespaces[tmpNS][c] == "function") {
return Namespaces[tmpNS][c];
}
}
return null;
}
// -------------- test
AsSetupPackage("test");
_global.test.TestClass = function(x) {
trace("constructor of test, parameter: " + x);
}
var test1 = new test.TestClass(1);
var test2 = new TestClass(2);
// -------------- output
// constructor of test, parameter: 1
// constructor of test, parameter: 2
----------------------------------------------------------------------------
-------------------
Funktionsweise:
_global.Namespaces dient als Ankerpunkt zum Durchsuchen der Namensräume
(damit nicht _global durchsucht werden muss, sondern wirklich nur die
Namensräume)
In dieser Form fumpt das ganze nur für Namensräume der Tiefe 1 (also "test",
aber nicht "test.blah"). Für beliebige Tiefe müsste die __resolve-Funktion
rekursiv sein... bin ich jetzt zu müde für :). Werd ich morgen testen.
Das müsste man dann noch mit deiner AsSelectPackage-Funktion verknüpfen,
damit zuerst im ausgewählten Package gesucht wird, und nicht das erste
passende von _global.Namespaces aus genommen wird.
Statt dessen könnte vielleicht die __resolve-Funktion sowas wie
"AsGetPackage(arguments.caller.callee)" benutzten, um automatisch das
Package der aufrufenden Klasse zuerst zu durchsuchen.
------------------------------------------------------
Archiv : http://www.freelists.org/archives/ascoders/
Optionen : http://www.freelists.org/list/ascoders
------------------------------------------------------
- Follow-Ups:
- [ascoders] AW: AW: Namensräume
- From: Andreas Hucks
- [ascoders] Re: AW: Namensräume
- From: Ralf Siegel
- References:
- [ascoders] Namensräume
- From: Ralf Siegel
Other related posts:
- » [ascoders] AW: Namensräume
- » [ascoders] AW: Namensräume
- » [ascoders] Re: AW: Namensräume
- » [ascoders] Re: AW: Namensräume
- [ascoders] AW: AW: Namensräume
- From: Andreas Hucks
- [ascoders] Re: AW: Namensräume
- From: Ralf Siegel
- [ascoders] Namensräume
- From: Ralf Siegel