molily: Vererbung

Beitrag lesen

zum einen sagt Douglas Crockford in einem seiner Vorträge beim yahoo-theater oder wo das war, dass man "new" immer vermeiden kann und sollte, weil das nämlich irgendwie eine Inkonsitenz oder Fehlerquelle innerhalb der Sprache ist.

Er plädiert halt für radikale funktionale und prototypische OOP. Also keine Konstruktoren (im Sinne von »new [Funktionsobjekt]«), keine Instanzen, sondern nur Objekte, die per Prototyp-Verweis aneinander delegieren. Der Schlüssel dazu ist Object.create(). Genauer erklärt er das unter »functional inheritance« in seinem Buch JavaScript: The Good Parts.

So richtig durchgesetzt hat sich das aber (noch) nicht. Es ist den meisten Programmierern uneinsichtig, weil sie klassenbasierte OOP gewöhnt sind, wo strikt zwischen Klassendeklarationen und Instanzobjekten unterschieden wird. Da Object.create() jedoch in ECMAScript 5 eingebaut sein wird (zusammen mit Eigenschafts-Deskriptoren), hat das durchaus Potenzial. Außerdem erlauben einige JavaScript-Engines die direkte Manipulation des Prototyp-Verweises __prototype__, das macht Delegation noch einfacher.

Mathias