JS Symbol
Symbol primitivi noyob identifikatorni ifodalaydi.
Tip nomi — symbol.
Symbol qiymatlar JavaScript’ning 7 ta primitiv tipidan biri.
Symbol’lar nima uchun kerak
Symbol’lar xususiyat kalitlari sifatida ishlatilishi mumkin bo‘lgan noyob qiymatlarni taqdim etadi.
Hech qanday ikkita symbol bir-biriga teng emas.
Symbol’lar yaratish
Symbol yaratish uchun Symbol() funksiyasidan foydalaning.
Misol
const id = Symbol();
Ixtiyoriy ravishda tavsif (description) berishingiz mumkin.
Misol
const id = Symbol("userId");
Tip haqida ma’lumot
Symbol qiymatning primitiv tipi — symbol.
Symbol’lar noyobdir
Symbol() ning har bir chaqiruvi yangi noyob qiymat yaratadi.
Eslatma
Tavsiflar ("id1") bir xil bo‘lsa ham, symbol’lar turli qiymatlardir.
Symbol tavsiflari
Symbol tavsifi debug qilish va ko‘rsatish maqsadlarida ishlatiladi.
Tavsif symbol’ning noyobligiga ta’sir qilmaydi.
Symbol’lar xususiyat kalitlari sifatida
Symbol’lar odatda obyekt xususiyatlarining kalitlari sifatida ishlatiladi.
Misol
const id = Symbol("id");
const person = {
name: "John"
};
person[id] = 123;
O‘zingiz sinab ko‘ring »
Symbol kalit string ko‘rinishidagi xususiyat nomlari bilan to‘qnashmaydi.
Global symbol’lar
Symbol.for() metodi global symbol reyestridan symbol yaratadi yoki oladi.
Misol
const a = Symbol.for("id");
const b = Symbol.for("id");
(a === b) // true
O‘zingiz sinab ko‘ring »
Symbol() dan farqli ravishda, Symbol.for() mavjud symbol’ni qaytarishi mumkin.
Taniqli (well-known) symbol’lar
JavaScript obyekt xatti-harakatini sozlaydigan bir nechta o‘rnatilgan symbol’larni taqdim etadi.
| Symbol | Vazifasi |
|---|---|
Symbol.iterator |
Iteratsiya xatti-harakatini belgilaydi |
Symbol.asyncIterator |
Asinxron iteratsiya xatti-harakatini belgilaydi |
Symbol.toStringTag |
Obyekt tipi stringlarini sozlaydi |
Symbol.hasInstance |
instanceof xatti-harakatini sozlaydi |
Taniqli symbol’lardan JavaScript’ning o‘zi foydalanadi.
Symbol’lar va iteratsiya qilinadigan obyektlar
Iteratsiya qilinadigan obyektlar Symbol.iterator dan foydalanadi.
Misol
const iterator = [1,2,3][Symbol.iterator]();
Batafsil:
Konstruktor emas
Symbol konstruktor emas.
new kalit so‘zini Symbol bilan ishlatib bo‘lmaydi.
Misol
new Symbol("id");
Bu misol TypeError tashlaydi.
Symbol va String
| Symbol | String |
|---|---|
| Har doim noyob | Takroriy qiymatlarga ega bo‘lishi mumkin |
| Primitiv tipi — symbol | Primitiv tipi — string |
| Ko‘pincha xususiyat kalitlari sifatida ishlatiladi | Ko‘pincha matn qiymatlari sifatida ishlatiladi |
Shuningdek qarang:
Tegishli sahifalar:
W3Schools Pathfinder
Yutuqlaringizni kuzating – bu bepul!
