Symbol.species Beispiel aus MDN macht wirklich keinen Sinn?

9

Ich habe gerade einen Artikel über Symbol.species übersetzt MDN, als ich auf folgenden Abschnitt stolperte:

  

Sie könnten Array-Objekte in Ihrer abgeleiteten Array-Klasse MyArray zurückgeben. Wenn Sie beispielsweise Methoden wie map () verwenden, die den Standardkonstruktor zurückgeben, möchten Sie, dass diese Methoden ein übergeordnetes Array-Objekt anstelle des MyArray-Objekts zurückgeben. Mit dem Artensymbol können Sie dies tun:

%Vor%

Neben der Schwierigkeit, den Text zu übersetzen, der mir nicht das Gefühl gab, zu wissen, was vor sich geht, beweist der Code nicht ihren Zweck. Wenn ich die Zeile static get [Symbol.species]() { return Array; } auskommentiere, ist das Ergebnis genau dasselbe.

Hier ist mein Code:

%Vor%

Und meine Konsolenausgabe:

%Vor%

Ist dieser Artikel einfach falsch oder fehlt mir als JS / Node Anfänger ein wichtiges Detail?

    
Flip 28.06.2016, 17:46
quelle

1 Antwort

3

Sie verpassen ein wichtiges Detail. Wenn Sie ein Array ableiten und dann map ausführen, können Sie mit Symbol.species ein Array abrufen, das kein Mitglied Ihrer abgeleiteten Klasse ist. Manchmal möchten Sie das, zum Beispiel wenn Sie eine API als Bibliotheksautor verfügbar machen. Möglicherweise möchten Sie eine spezielle Unterklassensoße für Ihre interne Verwendung, aber Methoden verfügbar machen, die reguläre Arrays für den öffentlichen Verbrauch zurückgeben.

Und es gibt keine wirkliche Grenze, Sie können einen alternativen Konstruktor für alles einrichten.

Warum das Auskommentieren der Zeile nichts ändert, bedenken Sie, dass Unterklassen-Built-Ins neu, möglicherweise nicht vollständig und korrekt implementiert sind, und dass dies besonders bei node.js der Fall ist, wenn sie auf den Zug aufspringen früh bleiben sie stecken und unterstützen seit Jahren etwas "falsches" in einem LTS (sie wurden darauf auf Object.observe verbrannt ).

    
Jared Smith 28.06.2016, 17:55
quelle

Tags und Links