Rumah >hujung hadapan web >tutorial js >Jenis data simbol dalam javascript
Jenis data Simbol dalam JavaScript ialah jenis data asas yang digunakan untuk mewakili nilai unik. Ciri-ciri Simbol: 1. Unik, setiap nilai Simbol adalah unik dan tidak akan sama dengan nilai lain 2. Ketidakbolehubahan, apabila nilai Simbol dicipta, ia tidak boleh diubah suai atau ditetapkan semula; diubah suai atau ditetapkan semula; Ia akan ditukar secara tersirat kepada jenis lain 4. Ia tidak boleh dikira apabila nilai Simbol digunakan sebagai nama atribut objek, ia tidak boleh dikira secara lalai.
Jenis data Simbol dalam JavaScript ialah ciri baharu yang diperkenalkan oleh ES6 Ia adalah jenis data asas yang digunakan untuk mewakili nilai unik. Nilai simbol boleh digunakan sebagai nama atribut objek untuk menyelesaikan masalah konflik nama atribut. Artikel ini akan memperkenalkan secara terperinci ciri, penggunaan dan beberapa senario aplikasi biasa jenis data Simbol.
1. Ciri Simbol
1: Setiap nilai Simbol adalah unik dan tidak akan sama dengan nilai lain, walaupun huraian nilai Simbol adalah sama. Ini bermakna anda boleh menggunakan nilai Simbol sebagai nama atribut objek untuk memastikan keunikan nama atribut dan mengelakkan konflik nama atribut.
2. Ketidakbolehubahan: Setelah nilai Simbol dicipta, ia tidak boleh diubah suai atau ditetapkan semula. Ini berbeza daripada jenis data seperti rentetan dan nombor, yang boleh mengubah nilainya melalui penugasan semula, manakala nilai Simbol tidak boleh diubah.
3. Ketersembunyian: Nilai simbol tidak akan ditukar secara tersirat kepada jenis lain. Sebagai contoh, menambah nilai Simbol pada rentetan tidak akan memberikan hasil yang diharapkan, tetapi akan membuang TypeError. Penyembunyian ini mengelakkan masalah penukaran jenis yang tidak dijangka.
4 Tidak terhitung: Apabila nilai Simbol digunakan sebagai nama atribut objek, nilai tersebut tidak boleh dikira secara lalai. Ini bermakna nama sifat Simbol tidak boleh diperoleh menggunakan gelung for...in atau kaedah Object.keys(). Ciri ini boleh digunakan untuk menyembunyikan atribut tertentu daripada dilalui.
2. Penggunaan Simbol
1 Cipta nilai Simbol: Anda boleh menggunakan fungsi Symbol() untuk mencipta nilai Simbol Fungsi ini boleh menerima parameter penerangan pilihan untuk mengenal pasti tujuan atau maksud nilai Simbol.
let sym = Symbol(); console.log(typeof sym); // "symbol" let symWithDesc = Symbol("description"); console.log(symWithDesc.toString()); // "Symbol(description)"
2 Gunakan Simbol sebagai nama atribut: Anda boleh menggunakan nilai Simbol sebagai nama atribut objek untuk memastikan keunikan nama atribut.
let obj = { [Symbol("key")]: "value" }; console.log(obj[Symbol("key")]); // undefined,每次使用Symbol()函数创建的Symbol值都是不相等的 let sym = Symbol("key"); obj[sym] = "new value"; console.log(obj[sym]); // "new value"
3 Dapatkan nama sifat Simbol: Anda boleh menggunakan kaedah Object.getOwnPropertySymbols() untuk mendapatkan semua nama sifat Simbol objek.
let obj = { [Symbol("key1")]: "value1", [Symbol("key2")]: "value2" }; let symbols = Object.getOwnPropertySymbols(obj); console.log(symbols); // [Symbol(key1), Symbol(key2)] console.log(obj[symbols[0]]); // "value1"
4. Sifat terbina dalam simbol: Nilai simbol mempunyai beberapa sifat terbina dalam yang boleh digunakan untuk mengubah suai kelakuan lalai objek.
- Symbol.iterator: digunakan untuk mentakrifkan kaedah lelaran lalai bagi objek.
- Symbol.toStringTag: digunakan untuk mengubah suai teg rentetan yang dikembalikan oleh kaedah lalai toString() objek.
- Symbol.hasInstance: digunakan untuk menentukan contoh lalai bagi tingkah laku operator untuk objek.
- Symbol.toPrimitive: digunakan untuk menentukan gelagat lalai bagi objek yang ditukar kepada nilai primitif.
let obj = { [Symbol.iterator]: function* () { yield 1; yield 2; }, [Symbol.toStringTag]: "MyObject" }; console.log([...obj]); // [1, 2] console.log(obj.toString()); // "[object MyObject]"
3. Senario aplikasi Symbol
1. Penyelesaian konflik nama atribut: Menggunakan nilai Simbol sebagai nama atribut objek boleh mengelakkan konflik nama atribut antara modul atau perpustakaan yang berbeza.
2. Tentukan pemalar: Anda boleh menggunakan nilai Simbol untuk menentukan pemalar untuk memastikan keunikan pemalar.
const RED = Symbol("red"); const BLUE = Symbol("blue");
3 Atribut tersembunyi: Menggunakan nilai Simbol sebagai nama atribut objek boleh menyembunyikan atribut tertentu untuk mengelakkannya daripada dilalui.
let obj = { [Symbol("hidden")]: "value", visible: "value" }; for (let key in obj) { console.log(key); // "visible",Symbol属性名不可枚举 }
4 Panjangkan objek terbina dalam: Anda boleh menggunakan nilai Simbol untuk melanjutkan fungsi objek terbina dalam dan menambah kaedah atau sifat tersuai padanya.
Array.prototype[Symbol.iterator] = function* () { for (let i = 0; i < this.length; i++) { yield this[i]; } }; let arr = [1, 2, 3]; console.log([...arr]); // [1, 2, 3]
Untuk meringkaskan, jenis data Simbol ialah jenis data asas dalam JavaScript, digunakan untuk mewakili nilai unik. Ia mempunyai ciri-ciri unik, tidak berubah, tersembunyi dan tidak boleh dikira, dan boleh digunakan dalam senario seperti menyelesaikan konflik nama harta, menentukan pemalar, menyembunyikan sifat dan memanjangkan objek terbina dalam. Penciptaan dan penggunaan nilai Simbol agak mudah, tetapi anda perlu memberi perhatian kepada kekhususan dan ketersembunyiannya untuk mengelakkan masalah yang tidak dijangka.
Atas ialah kandungan terperinci Jenis data simbol dalam javascript. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!