Tug'ma klasslarni kengaytirish
Array, Map, Error kabi tug'ma (built-in) klasslarni ham extends orqali kengaytirish mumkin. Bu bizga ularning imkoniyatlarini saqlab qolgan holda o'z metodlarimizni qo'shish imkonini beradi.
Array'ni kengaytirish
Aytaylik, bizga oddiy massivga o'xshash, lekin qo'shimcha metodlarga ega bo'lgan tur kerak. Masalan, isEmpty() metodini qo'shamiz:
E'tibor bering โ PowerArray odatdagi massivning barcha metodlariga (push, filter, length va h.k.) ega. Bundan tashqari, o'zimizning isEmpty()miz ham bor.
Qiziq narsa: yangi obyekt turi
Yuqoridagi misolda diqqatga sazovor jihat bor: filter, map kabi tug'ma metodlar o'sha meros olgan turdagi yangi obyektlarni qaytaradi, oddiy Array emas! Ular ichki jihatdan obyektning constructor xossasidan foydalanadi:
Symbol.species
Agar biz filter, map kabi metodlar oddiy Array qaytarishini xohlasak, maxsus statik getter Symbol.speciesni belgilaymiz. U qanday konstruktor ishlatilishini boshqaradi:
Symbol.species โ bu Map, Set kabi boshqa tug'ma kolleksiyalar uchun ham ishlaydi. U "ichki metodlar qanday obyekt yaratsin" degan savolga javob beradi.Error'ni kengaytirish
Amaliyotda eng ko'p kengaytiriladigan tug'ma klasslardan biri โ Error. Bu bizga o'ziga xos xato turlarini yaratish imkonini beradi:
Bu yerda super(message) ota Error konstruktorini chaqirib, messageni o'rnatadi. So'ng biz this.nameni o'zgartirib, xatoni aniq turlab olamiz. err instanceof Error ham true โ ya'ni bizning xatomiz haqiqiy Error.
catch blokida instanceof orqali ajratib, har biriga alohida munosabatda bo'lish mumkin.Statik xossalar meros olinmasligiga eslatma
Muhim tafsilot: tug'ma klasslarni kengaytirganda oddiy metod va konstruktorlar meros olinadi, ammo tug'ma klasslarning ba'zi statik metodlari meros olinmaydi. Masalan, Array.isArray โ u Arrayning statik metodi bo'lib, meros olgan klassdan chaqirilganda ehtiyot bo'lish kerak.
Xulosa
Array,Error,Mapkabi tug'ma klasslarniextendsqilish mumkin;- Meros olgan tur tug'ma metodlarni to'liq saqlaydi va o'z metodlarini qo'shadi;
filter,mapkabi metodlar standart holatda meros olgan turdagi obyekt qaytaradi;Symbol.speciesorqali qaytariladigan obyekt turini boshqarish mumkin;Errorni kengaytirib, o'ziga xos xato turlarini yaratish keng tarqalgan amaliyot.