Durch die Lektüre welches Frameworks lässt sich denn diese Prinzip am besten nachvollziehen?
Keines. Am ehesten noch YUI.
"CoffeeScript" (das erwähnt ja auch Crockford positiv in einem seiner Vorträge Ende 2010) oder MooTools oder Prototype oder lieber YUI? Oder mehrere davon, damit man sieht, worums im Kern geht?
CoffeeScript ist eine Metasprache, die nach ECMAScript kompiliert. CoffeeScript erlaubt Klassendeklarationen, welche direkt in Low-Level-Code mit Konstruktor und Prototyp umgesetzt werden. Vererbung wird wie in meiner Helferfunktion umgesetzt, Super-Aufrufe werden zu Konstruktor.superkonstruktor.prototype.call(this, ...) umgeschrieben. Von den Interna sieht man also nichts. Das entstehende JavaScript hingegen ist total straight und Low-Level. Ist es einmal nach JavaScript kompiliert, ist darin nur sehr wenig Metaprogramming nötig (eigentlich nur die __extends-Helferfunktion).
Mootools erlaubt mit new Class({...}) das Deklarieren von Klassen als Object-Literal. Superklassen gibt man mit einer Extends-Property an, eine Art Konstruktorfunktion als initialize-Property (es ist letztlich nicht der wirkliche Konstruktor). Mootools wrappt sämtliche Methoden, um this.parent()-Calls zu ermöglichen.
PrototypeJS erlaubt mit Class.create(Superclass, {...}) etwas ähnliches. Es wrappt alle Methoden, welche $super als Parameter entgegen nehmen, und gibt die Super-Methode darüber in die Methode hinein.
YUI habe ich anderswo ausführlich beschrieben. YUI bietet mehr einen Satz von losen Helferfunktionen sowie Module anstelle eines abgeschlossenen Klassenkonzepts. Wrapping wird dort nur gemacht, um Module vor der Benutzung seiner Methoden zu initialisieren, ansonsten ist es relativ Low-Level. Es gibt z.B. keinen syntactic sugar für Super-Calls. Dass mit intern Konstruktoren und Prototypen gearbeitet wird, liegt bei YUI noch ziemlich an der Oberfläche.
Mathias