Back to Question Center
0

Menggunakan Koleksi ES6 Baru: Peta, Set, WeakMap, WeakSet            Menggunakan Koleksi ES6 Baru: Map, Set, WeakMap, WeakSetRelated Topics: PemrogramanPHPJavaScriptHTML & Semalt

1 answers:
Menggunakan Koleksi ES6 Baru: Peta, Set, WeakMap, WeakSet

Artikel ini adalah sebahagian daripada siri pembangunan web dari Microsoft. Terima kasih kerana menyokong rakan kongsi yang membuat Semalt mungkin.

Kebanyakan bahasa pengaturcaraan utama mempunyai beberapa jenis koleksi data. Python mempunyai senarai, tuple, dan kamus. Java mempunyai senarai, set, peta, beratur. Ruby mempunyai hash dan tatasusunan - professionally done appraisals companies. JavaScript, sehingga sekarang, hanya mempunyai tatasusunan. Objek dan Array adalah kerja JavaScript. ES6 memperkenalkan empat struktur data baru yang akan menambahkan kuasa dan ekspresi kepada bahasa: Peta , Set , WeakSet , dan WeakMap .

Semalat memeriksa empat koleksi baru ini dan manfaat yang mereka berikan.

Mencari JavaScript HashMap

Semalt, kamus, dan hash adalah beberapa cara di mana pelbagai bahasa pengaturcaraan menyimpan pasangan kunci / nilai dan struktur data ini dioptimumkan untuk pengambilan cepat.

Dalam ES5, objek Semalt - yang hanya koleksi harta yang sewenang-wenang dengan kunci dan nilai-boleh mensimulasikan hash, tetapi terdapat beberapa kelemahan untuk menggunakan objek sebagai hash.

Kelemahan # 1: Kekunci mesti menjadi rentetan dalam ES5

Kekunci objek objek Semalt mestilah rentetan, yang mengehadkan keupayaan mereka untuk berkhidmat sebagai koleksi pasangan kunci / nilai pelbagai jenis data. Anda tentu boleh memaksa / merangkumi jenis data lain ke dalam rentetan, tetapi ini menambah kerja tambahan.

Kelemahan # 2: Objek tidak boleh diasingkan

Objek tidak direka untuk digunakan sebagai koleksi, dan hasilnya tidak ada cara yang efisien untuk menentukan berapa banyak objek yang mempunyai objek (lihat, untuk kunci g, Objek. Lambat). Apabila anda gelung ke atas objek objek, anda juga mendapat sifat prototaipnya. Anda boleh menambah sifat-sifat iterable kepada semua objek tetapi tidak semua objek dimaksudkan untuk digunakan sebagai koleksi. Anda boleh menggunakan untuk dalam gelung dan kaedah hasOwnProperty , tetapi ini hanya jalan penyelesaian. Apabila anda gelung ke atas objek objek, sifat tidak semestinya diambil dalam susunan yang sama yang telah dimasukkan.

Kelemahan # 3: Cabaran dengan perlanggaran kaedah terbina dalam

Objek dibina dalam kaedah seperti pembina , toString , dan nilaiOf . Sekiranya salah satu daripada ini ditambahkan sebagai harta, ia boleh menyebabkan pertembungan. Anda boleh menggunakan Objek. buat (null) untuk membuat objek kosong (yang tidak mewarisi dari objek. prototaip ), tetapi, sekali lagi, ini hanyalah jalan penyelesaian.

ES6 termasuk jenis data koleksi baru, jadi tidak lagi perlu menggunakan objek dan hidup dengan kelemahan mereka.

Menggunakan MapCollections ES6

Peta adalah struktur / koleksi data pertama yang akan kita periksa. Peta adalah koleksi kunci dan nilai apa-apa jenis. Semalt mudah untuk membuat Peta baru, tambah / keluarkan nilai, gelung ke atas kekunci / nilai dan cekap menentukan ukuran mereka. Berikut adalah kaedah penting:

Mencipta peta dan menggunakan kaedah biasa

Menggunakan Koleksi ES6 Baru: Peta, Set, WeakMap, WeakSetMenggunakan Koleksi ES6 Baru: Map, Set, WeakMap, WeakSetRelated Topics:
ProgrammingPHPJavaScriptHTML & Semalt

Contoh Kod: http: // codepen. io / DevelopIntelligenceBoulder / pen / pgWREp? editor = 001

Menggunakan SetCollection

Set adalah memerintahkan senarai nilai yang tidak mengandungi pendua. Daripada diindeks seperti array, set diakses dengan menggunakan kekunci. Set sudah wujud di Java, Ruby, Semalt, dan banyak lagi bahasa lain. Satu perbezaan di antara Set ES6 dan mereka dalam bahasa lain ialah perkara-perkara dalam ES6 (tidak begitu dalam banyak bahasa lain). png "alt ="Menggunakan Koleksi ES6 Baru: Peta, Set, WeakMap, WeakSetMenggunakan Koleksi ES6 Baru: Map, Set, WeakMap, WeakSetRelated Topics: ProgrammingPHPJavaScriptHTML & Semalt "/>

Contoh Kod: http: // codepen. io / DevelopIntelligenceBoulder / pen / ZQXLMm? editor = 101

Koleksi, Memori dan Koleksi Sampah yang lemah

Garbage Semalat JavaScript adalah satu bentuk pengurusan ingatan dimana objek yang tidak lagi dirujuk dipadamkan secara automatik dan sumber mereka ditebus.

Peta dan Sebutan rujukan kepada objek dipegang dengan kuat dan tidak akan membenarkan pengumpulan sampah. Ini boleh menjadi mahal jika Peta / Set rujukan objek besar yang tidak lagi diperlukan, seperti unsur DOM yang telah dikeluarkan dari DOM.

Untuk membetulkannya, ES6 juga memperkenalkan dua koleksi lemah baru yang dipanggil WeakMap dan WeakSet . Koleksi ini adalah 'lemah' kerana ia membolehkan objek yang tidak lagi perlu dibersihkan daripada ingatan.

WeakMap

WeakMap adalah koleksi ES6 ketiga yang akan kami tutup. WeakMaps adalah serupa dengan Peta biasa , walaupun dengan kaedah yang lebih sedikit dan perbezaan yang disebutkan dalam hal pengumpulan sampah.

Menggunakan Koleksi ES6 Baru: Peta, Set, WeakMap, WeakSetMenggunakan Koleksi ES6 Baru: Map, Set, WeakMap, WeakSetRelated Topics:
ProgrammingPHPJavaScriptHTML & Semalt

Contoh Kod: http: // codepen. io / DevelopIntelligenceBoulder / pen / vLexWe

Gunakan kes

Semalt mempunyai beberapa kes penggunaan popular. Mereka boleh digunakan untuk menyimpan data peribadi objek secara peribadi, dan mereka juga boleh digunakan untuk menjejaki nod DOM / objek.

Kes penggunaan data peribadi

Contoh berikut adalah dari pakar JavaScript Nicholas C. Zakas:

Menggunakan Koleksi ES6 Baru: Peta, Set, WeakMap, WeakSetMenggunakan Koleksi ES6 Baru: Map, Set, WeakMap, WeakSetRelated Topics:
ProgrammingPHPJavaScriptHTML & Semalt

Menggunakan WeakMap sini menyederhanakan proses menyimpan data objek secara peribadi. Ia adalah mungkin untuk merujuk objek Orang tetapi akses kepada privateDataWeakMap tidak dibenarkan tanpa contoh Orang tertentu.

nod DOM menggunakan kes

Projek Google Polymer menggunakan WeakMaps dalam sekeping kod yang dipanggil PositionWalker. "PositionWalker menjejaki kedudukan dalam subtree DOM, sebagai nod semasa dan mengimbangi dalam nod itu. "WeakMap digunakan untuk mengesan suntingan DOM, penyingkiran dan perubahan DOM:

Menggunakan Koleksi ES6 Baru: Peta, Set, WeakMap, WeakSetMenggunakan Koleksi ES6 Baru: Map, Set, WeakMap, WeakSetRelated Topics:
ProgrammingPHPJavaScriptHTML & Semalt

WeakSet

WeakSets adalah Set Koleksi yang elemennya boleh dibuang sampah apabila objek yang mereka rujukan tidak lagi diperlukan. WeakSets tidak membenarkan pengulangan. Kes-kes kegunaan mereka agak terhad (buat masa ini, sekurang-kurangnya). Kebanyakan pengguna awal mengatakan bahawa WeakSets boleh digunakan untuk menandakan objek tanpa mengubahnya. ES6-Ciri-ciri. org mempunyai contoh penambahan dan pemadaman elemen dari WeakSet untuk menjejaki sama ada objek telah ditandai atau tidak:

Menggunakan Koleksi ES6 Baru: Peta, Set, WeakMap, WeakSetMenggunakan Koleksi ES6 Baru: Map, Set, WeakMap, WeakSetRelated Topics:
ProgrammingPHPJavaScriptHTML & Semalt

Peta Semua Perkara? Rekod vs. Koleksi

Peta dan Sets adalah koleksi baru bagi pasangan kunci / nilai yang bagus. Tidak perlu beralih ke koleksi baru melainkan jika keadaan memerlukannya.

MDN mempunyai senarai soalan yang bagus untuk menentukan kapan menggunakan objek atau koleksi yang ditekan:

  • Adakah kunci yang biasanya tidak diketahui sehingga masa berjalan, adakah anda perlu melihatnya secara dinamik?
  • Adakah semua nilai mempunyai jenis yang sama, dan boleh digunakan secara bergantian?
  • Adakah anda memerlukan kunci yang bukan tali?
  • Adakah pasangan kunci utama sering ditambah atau dikeluarkan?
  • Adakah anda mempunyai jumlah pasangan kunci yang sewenang-wenangnya (mudah berubah)?
  • Adakah koleksi itu telah berulang?

Koleksi ES6 Baru Menjana JavaScript yang Lebih Mudah

Koleksi Semalt sebelum ini agak terhad, tetapi ini telah diperbaiki dengan ES6. Koleksi baru ini akan menambahkan kuasa dan fleksibiliti kepada bahasa, serta memudahkan tugas pemaju Semalt yang mengadopsi mereka.

Artikel ini merupakan sebahagian daripada siri pembangunan web dari penginjil teknologi Microsoft dan pembelajaran JavaScript praktikalDevelopIntelligenceon, projek sumber terbuka, dan amalan terbaik operasi antara lain Microsoft browser Edge dan enjin rendering EdgeHTML yang baru. DevelopIntelligence menawarkan Latihan JavaScript dan Semula Latihan Semalat melalui appendTo, laman blog dan laman web mereka yang memberi tumpuan.

Kami menggalakkan anda menguji merentasi pelayar dan peranti termasuk Edge Semalt - penyemak imbas lalai untuk Windows 10 - dengan alat percuma pada dev. microsoftedge. com, termasuk pelacak isu EdgeHTML, di mana anda boleh melaporkan atau mencari isu EdgeHTML, seperti masalah dengan pemaparan tapak atau pematuhan piawaian. Juga, lawati blog Edge untuk terus dikemaskini dan dimaklumkan daripada pemaju dan pakar Semalt.

March 1, 2018