[ Web Proxy ]
URL:
Viewing: https://uz.javascript.info/primitives-methods [Back]  [Original]

Ibtidoiylardagi usullar
UZ

Ushbu ochiq manbali loyihani butun dunyo bo'ylab odamlar uchun taqdim etmoqchimiz.

Ushbu qo'llanmaning mazmuni sizning tilingizga tarjima qilishga yordam bering!

    Javascript.info saytidan qidirish:
    O'quv qo'llanmasidan qidiring:
    Light themeDark theme
    DanskEnglishEspaolFranaisIndonesiaItalianoTrkeOzbek

    JavaScript bizga ibtidoiylar (matnlar, raqamlar va boshqalar) bilan xuddi obyektlar kabi ishlashga imkon beradi.

    Ular, shuningdek, chaqirish qilish usullarini taqdim etadilar. Biz ularni yaqinda organib chiqamiz, lekin avval uning qanday ishlashini bilib olamiz, chunki, albatta, ibtidoiylar obyekt emas (va bu yerda biz buni yanada aniqroq qilamiz).

    Keling, ibtidoiylar va obyektlar ortasidagi asosiy farqlarni korib chiqaylik.

    Ibtidoiylar

    • Ibtidoiy turdagi qiymatdir.
    • 6 ta ibtidoiy tur mavjud: string, number, boolean, symbol, null va undefined.

    Obyektlar

    • Bir nechta qiymatlarni xususiyat sifatida saqlashga qodir.
    • {} bilan yaratilishi mumkin, masalan: {name:" John ", age: 30}. JavaScript-da boshqa turdagi obyektlar mavjud; funktsiyalar, masalan, obyektlardir.

    Obyektlarning eng yaxshi tomonlaridan biri shundaki, biz funktsiyani uning xususiyatlaridan biri sifatida saqlashimiz mumkin.

    let john = {
      name: "John",
      sayHi: function () {
        alert("Salom do'stim!");
      },
    };
    
    john.sayHi(); // Salom do'stim!

    Shunday qilib, biz sayHi usuli bilan john obyektini yaratdik.

    Kopgina tilning ichida ornatilgan obyektlar allaqachon mavjud, masalan, sanalar, xatolar, HTML elementlar va boshqalar bilan ishlaydi, ular turli xil xususiyatlarga va usullarga ega.

    Biroq, bu imkoniyatlarning salbiy tomoni bor!

    Obyektlar ibtidoiylarga qaraganda ogirroq. Ular ichki texnikani qollab-quvvatlash uchun qoshimcha manbalarni talab qiladi. Ammo xususiyatlar va usullar dasturlashda juda foydali bolganligi sababli, JavaScript interpretatori qoshimcha yukni kamaytirish uchun ularni optimallashtirishga harakat qiladi.

    Obyekt sifatida ibtidoiy

    JavaScript-ni yaratuvchisi duch kelgan paradoks:

    • Matn yoki raqam kabi ibtidoiylar bilan ishlashni istagan juda kop narsa bor. Agar ular bilan usullar orqali ishlashimiz mumkin bolsa, bu ajoyib bolar edi.
    • Ibtidoiylar imkon qadar tez va yengil bolishi kerak.

    Yechim biroz noqulay korinadi, ammo bu yerda:

    1. Ibtidoiylar hali ham ibtidoiy. Istalgandak, bitta qiymat.
    2. Til matnlar, raqamlar, mantiqiy turdagi qiymatlar va belgilarning usullari va xususiyatlariga kirishga imkon beradi.
    3. Bu sodir bolganda, qoshimcha funktsiyalarni taminlaydigan maxsus oralish-obyekti yaratiladi va keyin yoq qilinadi.

    Oralish-obyekti har bir ibtidoiy tur uchun har xil va ular quyidagicha nomlanadi: String, Number, Boolean va Symbol. Shunday qilib, ular turli xil usullar toplamini taqdim etadilar.

    Masalan, str.toUpperCase() usuli mavjud , bu tepa registr matni qaytaradi.

    Bu shunday ishlaydi:

    let str = "Salom";
    
    alert(str.toUpperCase()); // SALOM

    Oddiy, togrimi? Mana aslida nima str.toUpperCase() da sodir boladi:

    1. str matni bu ibtidoiy. Shunday qilib, uning xususiyatiga kirish vaqtida matn qiymatini biladigan va toUpperCase() kabi foydali usullarga ega bolgan maxsus obyekt yaratiladi
    2. Ushbu usul ishlaydi va yangi matni qaytaradi (alert tomonidan qaytarilgan).
    3. str ibtidoiy yolgiz qoldirib, maxsus obyekt yoq qilinadi.

    Shunday qilib, ibtidoiylar usullarni taminlashi mumkin, ammo ular hali ham yengil bolib qolmoqda.

    JavaScript interpretatori ushbu jarayonni yuqori darajada optimallashtiradi. Hatto qoshimcha obyektni yaratishni umuman otkazib yuborishi mumkin. Ammo u hali ham spetsifikatsiyaga rioya qilishi va obyektni yaratganday tutishi kerak.

    Raqamning oziga xos usullari mavjud, masalan, toFixed (n) raqamni berilgan aniqlikka yaxlitlaydi

    let n = 1.23456;
    
    alert(n.toFixed(2)); // 1.23

    Info:number va Satrlar boblarida koproq usullarni korib chiqamiz.

    String/Number/Booleankonstruktorlari faqat ichki foydalanish uchun moljallangan

    Java kabi bazi tillarnew Number(1)yokinew Boolean(false) kabi sintaksis yordamida ibtidoiylar uchun oralish-obyektini yaratishga imkon beradi.

    JavaScript-da, bu tarixiy sabablarga kora mumkin, ammo juda tavsiya etilmaydi. Bir nechta joylarda ishlar chalkashib ketadi.

    Masalan:

    alert(typeof 0); // "number"
    
    alert(typeof new Number(0)); // "object"!

    Va bundan keyin zero obyekt bolganligi sababli ogohlantirish paydo boladi:

    let zero = new Number(0);
    
    if (zero) {
      // zero bu true, chunki u obyekt
      alert("nol - bu to'g'rimi?!?");
    }

    Boshqa tomondan, xuddi shu String/Number/Boolean funktsiyalaridan new dan foydalanish umuman foydali narsadir. Ular qiymatni tegishli turga ozgartiradilar: matnga, raqamga yoki mantiqiy qiymatga(ibtidoiy).

    Misol uchun, quyidagi butunlay joizdir:

    let num = Number("123"); // matni raqamga aylantirish
    null/undefined usullarga ega emas

    null va undefined ning maxsus ibtidoylari istisnolardir. Ularda tegishli oralish-obyektlari yoq va ular hech qanday usulga ega emas. Bir manoda, ular eng ibtidoiy.

    Bunday qiymat xususiyatiga kirishga urinish xatoga yol qoyadi:

    alert(null.test); // xato

    Xulosa

    • null va undefined dan tashqari ibtidoiylar koplab foydali usullarni taqdim etadi. Kelgusi boblarda ularni organamiz.
    • Rasmiy ravishda, bu usullar vaqtinchalik obyektlar bilan ishlaydi, lekin JavaScript interpretatori bu jarayonni juda yaxshi optimallashtiradi, shuning uchun ularning chaqiruvi juda kop resurslarni talab qilmaydi.

    Vazifalar

    Quyidagi kodni korib chiqing:

    let str = "Salom";
    
    str.test = 5;
    
    alert(str.test);

    Sizningcha, u qanday ishlaydi? Nima korsatiladi?

    yechim

    Buni bajarib koring:

    let str = "Salom";
    
    str.test = 5; // (*)
    
    alert(str.test);

    Natija ikki xil bolishi mumkin:

    1. undefined
    2. Xato.

    Nima uchun? Keling, (*) qatorida nima bolayotganini koraylik:

    1. str xususiyatga murojaat qilish vaqtida oralish-obyekti yaratiladi.
    2. Xususiyat bilan operatsiya unda amalga oshiriladi. Shunday qilib, obyekt test xususiyatini oladi.
    3. Amaliyot tugaydi va oralishsh-obyekti yoqoladi.

    Shunday qilib, oxirgi satrda str xususiyatidan iz qolmaydi. Matndagi har qanday obyekt ishlashi uchun yangi oralish obyekti.

    Bazi brauzerlar dasturchini yanada cheklashga qaror qilishlari va umuman ibtidoiylarga xususiyatlarni berishga yol qoymasliklari mumkin. Shuning uchun amalda xatolarni (*) satrida ham korishimiz mumkin. Bu spetsifikatsiyadan biroz uzoqroq.

    Ushbu misol ibtidoiylar obyekt emasligini aniq korsatib turibdi.

    Ular qoshimcha malumotlarni saqlay olmaydi.

    Barcha xususiyat/usul operatsiyalari vaqtinchalik obyektlar yordamida amalga oshiriladi.

    O'quv qo'llanma xaritasi

    Izohlar

    izoh berishdan oldin buni o'qing
    • Agar sizda nimani yaxshilash kerakligi haqida takliflaringiz bo'lsa - iltimos, GitHub muammosini yuboring yoki izoh berish o'rniga so'rov yuboring.
    • Agar siz maqolada biror narsani tushunolmasangiz - iltimos, batafsilroq ma'lumot bering.
    • Bir nechta so'z so'zlarini kiritish uchun <code> yorlig'ini ishlating, bir nechta satrlar uchun - ularni <pre> yorlig'i bilan o'rab qo'ying, 10 satrdan ortiq bo'lsa - sandbox (plnkr, jsbin, codepen)

    Web Proxy Viewer  |  New URL  |  Original Page