Also was sagt ihr?
Mittlerweile habe ich deinen Ansatz verstanden.
Die Idee mit den Scopes für private, public, protected erscheint mit genial. Ich hätte aber damit ergebliche Schwierigkeiten, da ich es mir angewöhnt habe private Variabeln so zu nennen wie die Getter/Setter Funktionen und nicht setName/getName (Das ist wohl vor allem in Java Bereich so üblich).
Das funktioniert dann aber nicht mit deinem Framework, weil dann die Funktion überschrieben würde:
Object.extend('A', function() {
public.a = function(p) {
this.a = p;
}
});
var b = new A();
alert('a() ist: ' + b.a());
alert('a() ist: ' + b.a());
Fehler: b.a is not a function
Dann kollidiert dein Skript mit mootools (und anderen FW, die Object.create erzeugen).
Das Problem ist, wenn die Funktion Object.create wie von Crockford verbreitet eingebunden wird, wirft das Skript einen Fehler.
Im Webkitbrowser müssen erst die Schlüsselwörter class und public gegen andere Namen ersetzt werden.
Das ist das Ergebnis meines Benchmarks, der aus einer Funktion besteht, die zwei Instanzen erzeugt und dann fünfmal die Funktion d() aufruft (s. anderes Posting von mir).
Das sind die Zahlen:
js = Eine Verberbunsghierachie nur mit js
class = ist deins
joose = http://code.google.com/p/joose-js/
create/getter = sind zwei Ansätze von mir
FF:
js:............ 21ms = 47.619/sek.....
getter:........ 69ms = 14.492/sek.....
create:........ 113ms = 8.849/sek......
joose:......... 250ms = 4.000/sek......
class:......... 541ms = 1.848/sek......
Opera:
js:............ 20ms = 100.000/sek....
joose:......... 48ms = 41.666/sek.....
create:........ 64ms = 31.250/sek.....
getter:........ 107ms = 18.691/sek.....
class:......... 610ms = 3.278/sek......
Webkit
js:............ 57ms = 35.087/sek.....
getter:........ 81ms = 24.691/sek.....
create:........ 134ms = 14.925/sek.....
joose:......... 148ms = 13.513/sek.....
class:......... 691ms = 2.894/sek......
Alles in allem würde ich sagen, die Idee ist gut. Doch der Versuch OOP Paradigmen mit JS umzusetzen, ist immer mit viel Kosten verbunden. Sehr informativ in dem zusammenhang ist der Blog von Andrea Giammarchi der auch einige Benchmarks gemacht hat und am Ende ebenfalls eine Funktion zum erzeugen von Klassen vorstellt.
Struppi.