suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Wann sollte die Symbol.species-Methode ausgelöst werden? Javascript - Wann sollte die Symbol.species-Methode ausgelöst werden?

Als ich die Beschreibung auf MDN las, kamen mir Zweifel. MDN beschreibt diese Methode so

Möglicherweise möchten Sie Array-Objekte in der erweiterten Array-Klasse MyArray zurückgeben. Wenn Sie beispielsweise Methoden wie „map()“ verwenden, die den Standardkonstruktor zurückgeben, möchten Sie, dass diese Methoden das Array-Objekt des übergeordneten Elements anstelle des MyArray-Objekts zurückgeben.

 // demo    
    class MyArray extends Array {
        static get [Symbol.species]() {
            return Array;       // 1
        }
    }
    var a = new MyArray(1, 2, 3);  // 2
    var mapped = a.map(x => x * x);  // 3

    console.log(mapped instanceof MyArray); // false
    console.log(mapped instanceof Array);    // true

Nach meinem Verständnis wird diese Methode beim Erstellen des Objekts ausgelöst und das erhaltene Objekt sollte auch eine Instanz des Array-Typs sein. Beim Debuggen wurde festgestellt, dass der Code bei der Ausführung an Punkt 2 nicht zur Ausführung zu Punkt 1 sprang, sondern die Ausführung bis Punkt 1 fortsetzte, als die Kartenmethode an Punkt 3 ausgeführt wurde. Zu dieser Zeit a instanceof MyArray === true, a instanceof Array === true. Nach der Ausführung von 3 Stellen wird das Ausgabeergebnis im Code erhalten.
Wann wird diese Methode ausgelöst? Warum eine Instanz von MyArray === true, aber eine zugeordnete Instanz von MyArray === false?

漂亮男人漂亮男人2792 Tage vor523

Antworte allen(1)Ich werde antworten

  • ringa_lee

    ringa_lee2017-05-19 10:19:53

    你可以看阮老师的说明 http://es6.ruanyifeng.com/#do...内置的Symbol值

    Antwort
    0
  • StornierenAntwort