cari

Rumah  >  Soal Jawab  >  teks badan

Bilakah kaedah Symbol.species harus dicetuskan javascript - Bilakah kaedah Symbol.species harus dicetuskan?

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?

漂亮男人漂亮男人2793 hari yang lalu524

membalas semua(1)saya akan balas

  • ringa_lee

    ringa_lee2017-05-19 10:19:53

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

    balas
    0
  • Batalbalas