2016-05-13 11 views
0

Ich habe meine eigenen es6 Mixin (und es funktioniert, ja!). Allerdings scheint es, dass ich nicht vollständig verstehen, was ich hier erstellt (folgendes Beispiel here):Verständnis es6 Mixin Superklasse Konvention

export var EventEmitterMixin = (daSuperClass) => class extends daSuperClass { 
} 

Wie kann ich diese Codezeile lesen? Es scheint, dass daSuperClass einfach nur dumm ist (wie kann ich es offensichtlich zu etwas ändern, das ich mag)? Warum ist es dort zweimal?

+0

Es gibt kein "ES6 Mixin", es ist nur ein erfundenes Wort. Was versuchst du zu machen? – naomik

+0

@naomik macht den Link in der OP-Hilfe? – jedierikb

+0

Ich habe gesehen, dass der Artikel anerkennt, dass Mixins ein Durcheinander in JavaScript sind, und das ist verständlich, aber darüber, wie Single-Vererbung der Bastard-Sohn der Mixin-Anwendung ist, beweist nichts. JavaScript ist nicht Ruby oder eine andere Sprache mit einer nativen Mixin-API. Es hat nicht einmal klassische Vererbung, es hat prototypische Vererbung. Alles, was eine Sprache zu etwas macht, was nicht ist, ist ein Fehltritt. Der Artikel bietet eine Lösung für ein Problem, das nicht einmal existiert. – naomik

Antwort

1

Wenn Sie eine Funktion definieren, müssen Sie Ihren Parametern einen Namen geben, damit Sie sie referenzieren können. Es kann einfacher sein, um zu sehen, was los ist, wenn es ohne Fett-Pfeil-Syntax neu geschrieben wird:

export var EventEmitterMixin = function(daSuperClass) { 
    return class extends daSuperClass { 
    [...] 
    } 
} 

Also das Argument Ihrer mixin nehmen wird den Prototyp für die neue Klasse bilden, die Sie erstellen. Sie fügen Ihre zusätzliche Funktionalität hinzu, indem Sie von der von Ihnen bereitgestellten Basisklasse "erweitern".