Bilakah kaedah Symbol.species harus dicetuskan javascript - Bilakah kaedah Symbol.species harus dicetuskan?
漂亮男人
漂亮男人 2017-05-19 10:17:53
0
1
494

Apabila saya membaca penerangan di MDN, saya mengalami keraguan. MDN menerangkan kaedah ini seperti ini

Anda mungkin mahu mengembalikan objek Array pada kelas tatasusunan lanjutan MyArray. Sebagai contoh, apabila menggunakan kaedah seperti map() yang mengembalikan pembina lalai, anda mahu kaedah ini mengembalikan objek Array ibu bapa dan bukannya objek 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

Mengikut pemahaman saya, kaedah ini akan dicetuskan apabila objek dicipta, dan objek yang diperoleh juga harus menjadi contoh jenis Array. Penyahpepijatan mendapati bahawa apabila kod dilaksanakan pada titik 2, ia tidak melompat ke titik 1 untuk pelaksanaan, tetapi meneruskan pelaksanaan ke titik 1 apabila kaedah peta pada titik 3 dilaksanakan. Pada masa ini a instanceof MyArray === true, a instanceof Array === true. Selepas pelaksanaan 3 tempat, hasil output dalam kod akan diperolehi.
Bilakah kaedah ini akan dicetuskan? Mengapakah instanceof MyArray === benar tetapi dipetakan instanceof MyArray === false?

漂亮男人
漂亮男人

membalas semua(1)
左手右手慢动作

Anda boleh membaca arahan Guru Ruan http://es6.ruanyifeng.com/#do... Nilai Simbol terbina dalam

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan