arti
Operator ekspansi (spread) adalah tiga titik (...) )。 Ini seperti kebalikan dari parameter rest, mengubah array menjadi urutan parameter yang dipisahkan koma.
Operator ini terutama digunakan untuk panggilan fungsi.
Dalam kode di atas, array.push(...) item) dan menambahkan(...) numbers), keduanya merupakan panggilan ke fungsi, dan keduanya menggunakan operator ekstensi. Operator ini mengubah array menjadi urutan parameter. Operator ekstensi dapat digunakan dalam kombinasi dengan parameter fungsi normal, yang sangat fleksibel.
Terapkan metode untuk array alternatif
Karena operator ekstensi dapat memperluas array, tidak perlu menggunakan metode apply untuk mengubah array menjadi argumen ke fungsi.
Berikut adalah contoh praktis dari operator ekstensi yang menggantikan metode apply, menerapkan metode Math.max untuk menyederhanakan penulisan elemen terbesar dari array.
Kode di atas mengatakan bahwa karena JavaScript tidak menyediakan fungsi untuk menemukan elemen terbesar dari array, Anda hanya dapat menerapkan fungsi Math.max untuk mengubah array menjadi urutan parameter dan kemudian menemukan nilai maksimum. Dengan operator ekstensi, Anda dapat menggunakan Math.max secara langsung. Contoh lain adalah dengan menambahkan array ke ekor array lain melalui fungsi push.
Dalam metode penulisan ES5 dari kode di atas, parameter metode push tidak dapat berupa array, sehingga kita harus menggunakan metode push secara fleksibel melalui metode apply. Dengan operator ekstensi, array dapat diteruskan langsung ke metode push. Berikut contoh lain.
Memperluas aplikasi operator
(1) Gabungkan array
Operator ekstensi menyediakan cara baru untuk menulis kombinasi angka.
(2) dikombinasikan dengan penugasan yang didekonstruksi
Operator ekstensi dapat dikombinasikan dengan penugasan yang didekonstruksi untuk menghasilkan array.
Jika Anda menggunakan operator ekstensi untuk penetapan array, itu hanya dapat ditempatkan pada digit terakhir parameter, jika tidak, kesalahan akan dilaporkan.
(3) Nilai pengembalian fungsi
Fungsi JavaScript hanya dapat mengembalikan satu nilai, dan jika beberapa nilai perlu dikembalikan, hanya array atau objek. Operator ekstensi memberikan solusi untuk mengatasi masalah ini.
Kode di atas mengambil baris data dari database, memperluas operator, dan meneruskannya langsung ke konstruktor Tanggal.
(4) Tali
Operator ekstensi juga dapat mengubah string menjadi array nyata.
Tulisan di atas memiliki keunggulan penting, yaitu dapat mengenali karakter Unicode 32-bit dengan benar.
Cara pertama untuk menulis kode di atas, JavaScript mengenali karakter Unicode 32-bit sebagai 2 karakter, dan tidak ada masalah dengan operator ekstensi. Jadi fungsi yang mengembalikan panjang string dengan benar, dapat ditulis seperti ini:
Ini adalah masalah untuk fungsi apa pun yang melibatkan manipulasi karakter Unicode 32-bit. Oleh karena itu, yang terbaik adalah menulis ulang semuanya dengan operator ekstensi.
Dalam kode di atas, jika Anda tidak menggunakan operator ekstensi, operasi pembalikan string salah.
(5) Objek yang mengimplementasikan antarmuka Iterator
Objek apa pun dalam antarmuka Iterator dapat diubah menjadi array sejati dengan operator ekstensi.
Dalam kode di atas, metode querySelectorAll mengembalikan objek nodeList. Ini bukan array, tetapi objek seperti array. Dalam hal ini, operator ekstensi dapat mengubahnya menjadi array nyata karena objek NodeList mengimplementasikan antarmuka Iterator. Untuk objek seperti array yang tidak memiliki antarmuka Iterator yang disebarkan, operator ekstensi tidak dapat mengubahnya menjadi array nyata.
Dalam kode di atas, arrayLike adalah objek seperti array, tetapi tanpa menyebarkan antarmuka Iterator, operator ekstensi akan melaporkan kesalahan. Dalam hal ini, Anda dapat menggunakan metode Array.from untuk mengonversi arrayLike ke array nyata sebagai gantinya.
(6) Peta dan Atur struktur, fungsi Generator
Operator ekstensi secara internal memanggil antarmuka Iterator dari struktur data, sehingga objek apa pun dengan antarmuka Iterator dapat menggunakan operator ekstensi, seperti struktur Peta.
Saat fungsi Generator berjalan, fungsi tersebut mengembalikan objek traverser, sehingga operator ekstensi juga dapat digunakan.
Dalam kode di atas, variabel go adalah fungsi Generator, dan setelah eksekusi, ia mengembalikan objek traverser, dan mengeksekusi operator ekstensi pada objek traversal ini akan mengubah nilai yang diperoleh dari traversal internal menjadi array. Jika Anda menggunakan operator ekstensi untuk objek tanpa antarmuka iterator, kesalahan akan dilaporkan.
|