Quand la méthode Symbol.species doit-elle être déclenchée ? javascript - Quand la méthode Symbol.species doit-elle être déclenchée ?
漂亮男人
漂亮男人 2017-05-19 10:17:53
0
1
529

Quand j'ai lu la description sur MDN, j'ai rencontré des doutes. MDN décrit cette méthode comme ceci

Vous souhaiterez peut-être renvoyer des objets Array sur la classe de tableau étendue MyArray. Par exemple, lorsque vous utilisez des méthodes telles que map() qui renvoient le constructeur par défaut, vous souhaitez que ces méthodes renvoient l'objet Array du parent au lieu de l'objet MyArray.

 // 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

D'après ma compréhension, cette méthode sera déclenchée lors de la création de l'objet, et l'objet obtenu doit également être une instance de type Array. Le débogage a révélé que lorsque le code était exécuté au point 2, il ne sautait pas au point 1 pour l'exécution, mais continuait l'exécution au point 1 lorsque la méthode map au point 3 était exécutée. En ce moment a instanceof MyArray === true, a instanceof Array === true. Après avoir exécuté 3 étapes, le résultat de sortie dans le code sera obtenu.
Quand cette méthode sera-t-elle déclenchée ? Pourquoi une instance de MyArray === true mais une instance mappée de MyArray === false ?

漂亮男人
漂亮男人

répondre à tous(1)
左手右手慢动作

Vous pouvez lire les instructions du professeur Ruan http://es6.ruanyifeng.com/#do... La valeur du symbole intégrée

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal