Struppi: Delegation mit Prototypen

Beitrag lesen

Ein Kopieren des gesamten Objekts ist in dem Fall nicht nötig, man hat vielmehr einer Art Copy-on-Write:

Das funktioniert sogar z.T. mit einem Array:

if (typeof Object.create !== 'function') {  
    Object.create = function (o) {  
        function F() {}  
        F.prototype = o;  
        return new F();  
    };  
}  
  
var obj = [1,2,3];  
var copy = Object.create(obj);  
  
alert(copy[0]); // 1  
alert(copy.length); // 3  
copy.push(5);  
alert(copy.length); // 4  

Allerdings funktionieren nicht alle Methoden. toString(), z.b. für ein alert(copy), versagt hier.

Prototypen verstehen: Die Glasplatten-Metapher

Kannte ich schon und hat mir auch geholfen. Ein sehr anschaulicher Artikel über dieses beileibe nicht einfache Thema, vor allem die prototypen sind in ihrem ganzen Verhalten nicht einfach zu verstehen.

Object.create() ist ziemlich genial. Mit dieser einfachen Möglichkeit, prototypische Delegation umzusetzen, kommt JavaScript endlich zu sich selbst.

Leider gibt es viel gemurkse, um OOP Paradigmen in JS umzusetzen, ob die damit wirklich ein Ende haben werden ist eine andere Sache.
Der ganze Kerl - dank Java - erwartet die totale Kapselung. Mir hat der Blog von Andrea Giammarchi in der Hinsicht ein wenig die Augen geöffnet, vor allem der _super bullshit Artikel und better javascript classes.

Wobei ich aber immer noch lieber eine echte Konstruktorfunktion verwende, um eben auch Intialisierungen zu kapseln. Aber das wie in mit Perl, es gibt viele Möglichkeiten etwas zu tun, deshalb ist Javascript toll ;-)

Struppi.