JavaScript. Ma'lumotlar turlari va operatorlari. Javascript ma'lumotlar turlari o'zgaruvchilar turini o'rnatadi

O'zgaruvchi - bu nomli xotira joylashuvi bo'lib, unda siz ba'zi ma'lumotlarni saqlashingiz va undan olishingiz mumkin.

O'zgaruvchilarni e'lon qilish (yaratish) var kalit so'zi yordamida amalga oshiriladi.

// xabar - o'zgaruvchi nomi var xabar;

O'zgaruvchini yaratganingizda, darhol unga qiymat belgilashingiz mumkin.

O‘zgaruvchiga qiymat berish “=” operatori yordamida amalga oshiriladi.

// masalan, o'zgaruvchan elektron pochta yarating va unga "string" ni belgilang [elektron pochta himoyalangan]"var email =" [elektron pochta himoyalangan]"; // elektron pochta o'zgaruvchisini yangi qiymatga o'rnating email = " [elektron pochta himoyalangan]";

O'zgaruvchining qiymatini olish uchun unga faqat nomi bilan murojaat qiling.

// masalan, elektron pochta o'zgaruvchisining qiymatini brauzer konsoliga chiqaring: console.log(email);

Bitta var kalit so'zi yordamida bir nechta o'zgaruvchilarni e'lon qilish uchun vergul qo'yish kerak.

Var narxi = 78,55, miqdori = 10, xabar;

JavaScript dinamik yoki zaif terilgan tildir. Bu shuni anglatadiki, o'zgaruvchi e'lon qilinganda, u qabul qilishi mumkin bo'lgan ma'lumotlar turini ko'rsatishga hojat yo'q. Shuning uchun, avval o'zgaruvchiga bir turdagi ma'lumotlarning qiymatini, keyin esa boshqasini joylashtirishingiz mumkin.

Var chiqishi = "muvaffaqiyat"; // o'zgaruvchida qator ma'lumotlar turi bor chiqdi = 28; // bir xil o'zgaruvchi, lekin allaqachon "raqamli" ma'lumotlar turi chiqdi = true; // bir xil o'zgaruvchi, lekin allaqachon mantiqiy qiymatni saqlaydi

O'zgaruvchining qiymati cheksiz ko'p marta o'zgartirilishi mumkin.

// yosh o'zgaruvchisi yaratildi var age; // o'zgaruvchan yoshga 67 yoshi = 67 qiymati beriladi; // o'zgaruvchan yosh "Pensiya yoshi" ga o'rnatiladi age = "Pensiya yoshi"; // o'zgaruvchan yosh 55 yoshga o'rnatiladi = 55;

Mijoz ilovalarini ishlab chiqishda yaxshi amaliyot - berilgan o'zgaruvchida faqat bitta ma'lumot turidan foydalanish, ya'ni. O'zgaruvchiga har xil turdagi ma'lumotlarning qiymatlarini yozmang. O'zgaruvchida qanday turdagi ma'lumotlarni kutish kerakligini tushunish uchun o'zgaruvchini yaratishda uni darhol ma'lum bir qiymat bilan ishga tushirish tavsiya etiladi.

O'zgaruvchining nomi harflar, raqamlar va $ va _ belgilaridan iborat bo'lishi mumkin. Bunday holda, o'zgaruvchining birinchi belgisi raqam bo'lmasligi kerak. Bunga qo'shimcha ravishda, siz o'zgaruvchan nomlar sifatida ajratilgan so'zlardan foydalana olmaysiz.

// ikkita o'zgaruvchi yaratish, birinchi o'zgaruvchi telefon deb ataladi, ikkinchisi - o'lchov; telefon, xabar;

O'zgaruvchi nomidagi harflarning holati muhim ahamiyatga ega. Ya'ni, masalan, o'zgaruvchan telefon va Telefon ikki xil o'zgaruvchidir.

Agar qat'iy rejim ishlatilmasa, u holda var kalit so'zisiz boshlang'ich qiymatga ega o'zgaruvchini yaratishingiz mumkin.

Narxi = 250,00; // o'zgaruvchi yaratdi va uni 250,00 foiz = "20%" raqami bilan ishga tushirdi; // o'zgaruvchi yaratdi va uni "20%" qatori bilan ishga tushirdi.

Ammo bu tarzda o'zgaruvchilarni yaratish tavsiya etilmaydi.

Ma'lumotlar turlari

JavaScript-da ma'lumotlar turlarini ibtidoiy va ob'ektga bo'lish mumkin.

Primitiv ma'lumotlar turlarini o'z ichiga olgan o'zgaruvchilar ularning qiymatini aniq saqlaydi.

JavaScript-da 5 ta ibtidoiy ma'lumotlar turlari mavjud:

  • raqam;
  • ip;
  • mantiqiy turi (boolean);
  • null;
  • aniqlanmagan.

Agar bitta o'zgaruvchiga ibtidoiy ma'lumotlar turini o'z ichiga olgan boshqasining qiymati tayinlangan bo'lsa, u ushbu qiymatning o'z nusxasini oladi.

Var x = 77, y = x; x = 55; y; // 77

Ob'ektni o'z ichiga olgan o'zgaruvchilar aslida ob'ektning o'zini emas, balki unga havolani saqlaydi.

Agar bitta o'zgaruvchiga ob'ektni (unga havola) o'z ichiga olgan boshqasining qiymati tayinlangan bo'lsa, u ham unga havolani oladi. Ushbu operatsiya natijasida ushbu ikki o'zgaruvchi bir xil ob'ektga havolani o'z ichiga oladi.

// 1-misol ("ob'ekt" ma'lumotlar turi bilan) var koord1 = (x: 77, y: 100), koord2 = koord1; koordinat1.x = 55; // ob'ektning x xossasini yangi qiymatga o'rnatish coord2.x; // 55, chunki coord1 va coord2 bir xil ob'ektga havolani o'z ichiga oladi // 2-misol (ma'lumot massiv turi bilan) var coord1 = , koord2 = koord1; koord1 = 55; // 0 indeksli elementni koord2 yangi qiymatiga o'rnating; // 55, chunki coord1 va coord2 bir xil ob'ektga havolani o'z ichiga oladi // 3-misol (ma'lumotlar turi "sana" bilan) var date1 = new Date(2018,00,01), date2 = date1; sana2 = date2.setDate(date2.getDate()+7); // sanani 7 kunga oshirish sana1; // 01/07/2018, chunki sana1 va sana2 bir xil ob'ektga havolani o'z ichiga oladi

Raqam

JavaScript-dagi raqamli ma'lumotlar turi umumiydir. U butun sonlarni ham, kasrlarni ham ifodalash uchun ishlatiladi.

Var int = 5; // integer var float = 5,98; // kasr son

JavaScript-da raqamlarni ifodalash formati IEEE 754-2008 standartiga mos keladi.

JavaScript-da butun sonlarni nafaqat ko'rsatish mumkin kasr tizimi sanoq tizimi, shuningdek, sakkizlik (0) yoki o'n oltilik sanoq tizimida (0x) qavslar ichida ko'rsatilgan prefikslar yordamida:

Var int = 010; // 8 int = 055; // 45 int = 0xFF; //255 int = 0xB8; // 184

Raqamlarni eksponensial shaklda yozish mumkin:

Var soni = 2e3; // 2*10^3 sonining eksponensial belgisi (2000) num = 2e-3; // 2*10^-3 (0,002) sonining eksponensial belgisi = 3,2e3; // 3200 num = 1,5e-2; // 0,015

Raqamlardan tashqari, raqamli ma'lumotlar turi maxsus raqamli qiymatlarni ham o'z ichiga oladi:

  • Cheksizlik (ijobiy cheksizlik);
  • -Infinity (salbiy cheksizlik);
  • NaN (Raqam emas).

Maxsus qiymat Infinity juda katta ijobiy raqamni bildiradi, ya'ni. JavaScript-da ifodalab bo'lmaydigan raqam, chunki u juda katta.

Maxsus ma'nolar -Infinity, aksincha, juda katta salbiy sonni anglatadi, ya'ni. JavaScript bilan ifodalab bo'lmaydigan raqam, chunki u ham juda katta.

Hisoblash natijasida maxsus raqamli qiymatlarni qaytaradigan iboralarga misol:

5/0; // Infinity -5/0; // -Infinity Math.pow(10,399); // Infinity (10 dan 399 gacha) Math.pow (10,399); // -Infinity (-10 dan 399 gacha)

NaN qiymati JavaScript hisoblay olmaydigan matematik operatsiyalarni bajarish natijasida qaytariladi.

5 - "Salom"; // NaN (5-raqamdan chiziqni ayirish) 1000 / "20px"; // NaN (satrga bo'lingan raqam) true * "1rem"; // NaN (mantiqiy qiymat rost satrga ko'paytiriladi)

Qizig'i shundaki, JavaScript-dagi NaN qiymati hech narsaga, shu jumladan o'ziga teng emas.

NaN == NaN; // noto'g'ri NaN === NaN; // yolg'on

Mantiqiy ma'lumotlar turi

Mantiqiy - bu faqat ikkita qiymatga ega bo'lgan ibtidoiy ma'lumotlar turi: haqiqiy va noto'g'ri.

Var a = rost; var b = noto'g'ri;

String

String - JavaScript-da matnni ifodalash uchun ishlatiladigan ma'lumotlar turi.

JavaScript qatori 0 yoki dan iborat bo'lishi mumkin Ko'proq belgilar.

JavaScript har doim string formati sifatida Unicode-dan foydalanadi.

Satr yaratish (string literal) matnni bitta yoki ichiga qo'shish orqali amalga oshiriladi qo'sh tirnoq.

"JavaScript"; "ECMAScript";

JavaScript-da bitta va ikkita tirnoq o'rtasida farq yo'q.

Ammo, ba'zi hollarda, qo'sh tirnoq emas, balki bitta tirnoqdan foydalanish mantiqan to'g'ri keladi va aksincha.

Misol uchun, satrda qo'sh tirnoq bo'lsa, uni bitta tirnoq ichiga olish qulayroqdir. Bu undagi qo'sh tirnoqlardan qochish zaruratini yo'q qiladi.

""ECMAScript""; // qochishsiz (bitta tirnoq yordamida) "\"ECMAScript\""; // qochish bilan

JavaScript-dagi satr maxsus belgilarni o'z ichiga olishi mumkin. Masalan, \n (chiziq tasmasi), \t (tab), \r (karetaning qaytishi) va boshqalar.

"Bu gap.\nBu ham gap, lekin u yangi qatordan boshlanadi.";

Satrlar yordamida siz qo'shish (birlashma) yoki boshqacha aytganda, birlashtirish amalini bajarishingiz mumkin. Buning uchun "+" operatori ishlatiladi. Ushbu operatsiyaning ma'nosi ikkinchi qatorni birinchisining oxiriga qo'shishdir.

"Men sevaman" + "JavaScript"; // Men JavaScript-ni yaxshi ko'raman

Qiymat "aniqlanmagan"

undefined - aniqlanmagan ga teng yagona qiymatga ega bo'lgan maxsus ibtidoiy ma'lumotlar turi.

Ushbu turdagi ma'lumotlar e'lon qilingan o'zgaruvchiga ega bo'lib, unga hali qiymat berilmagan.

Var raqami; // aniqlanmagan

Aniqlanmagan qiymat ob'ektning mavjud bo'lmagan xususiyatiga kirishda ham qaytariladi.

Var obj = (); // bo'sh ob'ekt obj.prop; // aniqlanmagan

"null" qiymati

null - null ga teng yagona qiymatga ega bo'lgan maxsus ibtidoiy ma'lumotlar turi.

null faqat "hech narsa" yoki "noma'lum qiymat" ma'nosiga ega bo'lgan maxsus qiymatdir, ya'ni. bu hech narsani anglatmasligi aniq.

Ob'ekt

Ob'ekt nom-qiymat juftliklaridan tashkil topgan ma'lumotlar strukturasidir.

Ob'ektning so'zma-so'z belgilaridan foydalangan holda ob'ekt yaratish quyidagicha amalga oshiriladi:

(ism_1: qiymat_1, nom_2: qiymat_2, nom_3: qiymat_3, ... )

Ko'rib turganingizdek, nom ikki nuqta yordamida qiymatdan ajratiladi, juftliklar esa vergul yordamida bir-biridan ajratiladi.

Bundan tashqari, agar juftlikning qiymati funksiya bo'lsa, u holda bu ob'ektning usuli deyiladi. Boshqa barcha juftliklar, ya'ni. qiymat sifatida funksiya ishlatilmaydigan juftliklar obyekt xossalari deyiladi.

Boshqacha qilib aytganda, ob'ekt - bu xususiyatlar va usullardan tashkil topgan ma'lumotlar strukturasi.

Var person = ( ism: "Vitaliy", yosh: 27, getAge: funktsiya () ( "Yosh: " + this.age; ) qaytarish)

Ob'ektning xususiyatlariga kirish nuqta orqali yoki qavs belgisi yordamida amalga oshiriladi.

// brauzer konsolida age xususiyati qiymatini ko'rsatish // 1-chi usul (nuqta orqali) console.log(person.age); // 2-usul (qavslar yordamida) console.log(person["yosh"]); // getAge usulini chaqirish; qaytaradigan qiymat console.log(person.getAge()) ga chiqariladi;

operator turi

Typeof operatori satr sifatida ifodaning ma'lumotlar turi haqida ma'lumot olish uchun ishlatiladi.

typeof operatorining sintaksisi (qavssiz variant):

Ifoda turi

Operator sintaksisi turi (qavslar yordamida):

Turi (ifoda)

Var nomi, yosh = 37, email = " [elektron pochta himoyalangan]", isLicense = rost, qiziqish: null, lastExperience: (davr: "Iyun 2011 - Iyun 2018", joy: "ISACA, Moskva", pozitsiya: "Veb dizayner" ), getExperience: function() ( lastExperience.periodni qaytarish + " ("+ lastExperience.position + " - " + lastExperience.place + ")"; ); ism turi; // "aniqlanmagan" yosh turi; // Litsenziyaning "raqami" turi; // "boolean" qiziqish turi; / / "object" (1) typeof lastExperience; // "object" typeof getExperience; // "funktsiya" (2) /* (1) - bu tilda birinchi amalga oshirilganidan beri mavjud bo'lgan xato; u hali ham mavjud emas. muvofiqlikni saqlash uchun belgilangan va skriptlarni yozishda buni hisobga olish kerak; null - ibtidoiy ma'lumotlar turi, u ob'ekt emas */ /* (2) - typeof operatori funktsiyalarni alohida ajratishi juda qulay; lekin JavaScipt-dagi funksiya ham ob'ektdir; buni quyidagi konstruktsiyani bajarish orqali osongina tekshirish mumkin: */ typeof getExperience.__proto__.__proto__ // "ob'ekt" (funktsiya prototipi ob'ektdir)

Konstantalar

ECMAScript 6 ning chiqarilishi bilan konstantalarni yaratish mumkin bo'ldi. Bu const kalit so'zi yordamida amalga oshiriladi.

Const COLOR_RED = "#ff0000";

Konstanta - bu qiymati o'zgarishdan himoyalangan o'zgaruvchidir. Bular. Qiymatni o'zgartirmoqchi bo'lganingizda xatolik yuz beradi.

Const COLOR_RED = "#ff0000"; COLOR_RED = "#f44336"; // Tugallanmagan TypeError: Doimiy o'zgaruvchiga tayinlash.

Agar, masalan, konstanta ob'ektni o'z ichiga olsa, uni o'zgartirish mumkin emas, aniqrog'i unga havola. Ammo bu ob'ektning xususiyatlarini o'zgartirish mumkin.

Const COLORS = (qizil: "#ff0000", yashil: "#00ff00", ko'k: "#00ff00" ) COLORS = ["#ff0000","#00ff00","#00ff00"]; // Tugallanmagan TypeError: Doimiy o'zgaruvchiga tayinlash. COLORS.green = "#4caf50";

Ma'lumotlar turlari dasturlash tillarida ma'lumotlar tasnifini yaratishga yordam beradi. Misol uchun, raqam va belgilar qatori JavaScript-ga boshqacha munosabatda bo'ladigan har xil turdagi ma'lumotlardir.

Bu juda muhim, chunki har bir ma'lumot turi ma'lum qiymatlarni olishi va muayyan harakatlarni bajarishi mumkin. JavaScript-da o'zgaruvchilar ustida amallarni bajarish uchun har bir berilgan o'zgaruvchining ma'lumotlar turini tushunish muhimdir.

Ushbu qo'llanma sizni JavaScript ma'lumotlar turlari bilan tanishtiradi.

Eslatma: Ushbu qo'llanmadagi ma'lumotlar to'liq emas, lekin u sizga asosiy JavaScript opsiyalari haqida umumiy ma'lumot beradi.

Dinamik yozish

JavaScript dinamik tildir. Bu shuni anglatadiki, ma'lumotlar turini tekshirish kompilyatsiya vaqtida emas, balki ish vaqtida amalga oshiriladi.

Dinamik tillarda bir xil nomdagi o'zgaruvchilarni saqlash uchun foydalanish mumkin turli xil turlari ma'lumotlar.

Masalan, var kalit so'zi bilan aniqlangan t o'zgaruvchisi har xil turdagi ma'lumotlarni saqlashi mumkin; u ham ishga tushirilishi mumkin, lekin aniqlanmagan:

var t = 16; // t - son
var t = "Tereza"; // t - satr
var t = rost; // t - mantiqiy
var t; // t aniqlanmagan

Barcha t o'zgaruvchilari turli xil JavaScript ma'lumotlar turlarini o'z ichiga oladi. JavaScript-da siz uni ishlatishdan oldin o'zgaruvchining ma'lumotlar turini aniq belgilashingiz shart emas.

Raqamlar

JavaScript butun sonlar va suzuvchi nuqta raqamlarini ajratmaydigan yagona raqamli ma'lumotlar turiga ega. Shuning uchun JavaScript-da raqamlar kasrli yoki kasrsiz yozilishi mumkin:

var num1 = 93;
var num2 = 93,00;

Yuqoridagi misolda ikkala o'zgaruvchida vergul bormi yoki yo'qmi, raqamlar mavjud.

JavaScript-dagi ilmiy belgilar juda katta yoki kichik raqamlarni qisqartirishga imkon beradi:

var num3 = 987e8; // 98700000000
var num4 = 987e-8; // 0,00000987

JavaScript-da raqamlar 15 tagacha aniq hisoblanadi. Bu degani, 16-raqamga yetgandan so'ng, raqamlar yaxlitlanadi:

var num5 = 999999999999999; // 999999999999999 sifatida qoladi
var num6 = 9999999999999999; // 10000000000000000 gacha yaxlitlangan

Bundan tashqari, JavaScript-dagi raqamlar uchta ramziy ma'noga ega:

Cheksizlik - raqamli qiymat, bu cheksizlikka yaqinlashadigan ijobiy son.

Infinity - cheksizlikka yaqinlashib kelayotgan salbiy sonni ifodalovchi raqamli qiymat.

NaN - No-a-Number, suzuvchi nuqtali raqamning maxsus holati.

Infinity va -Infinity JavaScript-da mavjud bo'lgan maksimal mumkin bo'lgan sondan ortiq sonni hisoblashda qaytariladi. Ular nolga bo'lish kabi noaniq qiymatlarni hisoblashda ham paydo bo'ladi:

var num7 = 5/0; // Cheksizlik
var num8 = -5 / 0; // -Cheksizlik

Texnik jihatdan, agar raqam JavaScript-ning yuqori chegarasi bo'lgan 1,797693134862315E+308 dan katta bo'lsa, Infinity qaytariladi.

Xuddi shunday, raqam pastki chegaradan oshib ketganda -Infinity ko'rsatiladi, -1,797693134862316E+308.

Infinity raqami tsikllarda ham ishlatilishi mumkin:

while (num9 != Infinity) (
// Bu yerda kod num9 = Infinity orqali bajariladi
}

Aniqlanmagan raqamlar uchun NaN chop etiladi. Agar siz raqam va raqamli bo'lmagan qiymat ustida matematik amalni bajarishga harakat qilsangiz, siz NaN olasiz. Masalan:

var x = 20 / "Shark"; // x NaN bo'ladi

20 ni Shark qatoriga bo'lish mumkin emasligi sababli, x ning qiymati NaN bo'ladi.

Biroq, agar qatorni raqamli qiymat sifatida baholash mumkin bo'lsa, JavaScript matematik ifodani baholaydi:

var y = 20 / "5"; // y 4 bo'ladi

JavaScript 5 ni raqamli qiymat sifatida ko'rib chiqishi mumkinligi sababli, 5 matematik bo'linish operatori bilan ishlaydi.

Agar ifodadagi bitta o'zgaruvchiga NaN o'rnatilgan bo'lsa, ikkinchi operand raqam bo'lsa ham, natija NaN bo'ladi.

var a = NaN;
var b = 37;
var c = a + b; // c NaN bo'ladi

Shunday qilib, JavaScript-da faqat bitta raqamli ma'lumotlar turi mavjud. JavaScript-da raqamlarni butun va suzuvchi nuqtali raqamlarga ajratishning hojati yo'q, chunki JavaScript dinamik tildir.

Strings

Satr - bu bir yoki bir nechta belgilar (harflar, raqamlar va boshqa belgilar) ketma-ketligi. Satrlar matn ma'lumotlarini ifodalaydi.

JavaScript-da satrlar bitta va ikkita tirnoq ichida keladi. Satr yaratish uchun siz qo'shtirnoq ichiga belgilar ketma-ketligini kiritishingiz kerak:

var singleQuotes = "Bu bitta qo'shtirnoq ichidagi satr.";
var doubleQuotes = "Bu ikki tirnoq ichidagi satr.";

Siz bitta yoki ikkita tirnoqdan foydalanishingiz mumkin, lekin bir xil kod ichida doimiy ravishda bir turdagi tirnoqdan foydalanishingiz kerak.

Dastur "Salom, dunyo!" kompyuter dasturlashda satrlar qanday ishlatilishini ko'rsatadi. Asosan, ichida bu misolda satr - bu “Salom, dunyo!” iborasini tashkil etuvchi belgilar ketma-ketligi. ogohlantirishda().





helloFunction() funktsiyasi (
alert("Salom, dunyo!");
}



Meni bosing



Kodni ishga tushirish va "Meni bosing" tugmasini bosish orqali siz matnli qalqib chiquvchi oynani ko'rasiz:

Boshqa ma'lumotlar turlari singari, satrlar o'zgaruvchilarda saqlanishi mumkin.

var hw = "Salom, Dunyo!";

Keyin o'zgaruvchini chaqirish orqali satrni ko'rsatishingiz mumkin:

...

var hw = "Salom, Dunyo!";
helloFunction() funktsiyasi (
ogohlantirish (hw);
}

...
Salom Dunyo!

Satrlar ma'lumotni foydalanuvchiga uzatish va dasturga qaytarish imkonini beradi.

Mantiqiy ma'lumotlar turi

Mantiqiy (yoki mantiqiy) ma'lumotlar turi ikkita qiymatdan iborat - haqiqiy va noto'g'ri.

Ushbu tur informatika fanida mantiq va algoritmlar bilan bog'liq bo'lgan haqiqat qiymatlarini ifodalash uchun ishlatiladi.

Eslatma: Ushbu ma'lumotlar turi matematik Jorj Bul sharafiga nomlangan.

Matematikadagi ko'plab operatsiyalar to'g'ri yoki noto'g'ri deb baholanishi mumkin bo'lgan natijalarni keltirib chiqaradi:

Bundan ko'proq:

  • 500 > 100 rost
  • 1 > 5 noto'g'ri

Dan kichik; .. dan kamroq:

  • 200 < 400 true
  • 4 < 2 false
  • 5 = 5 rost
  • 500 = 400 noto'g'ri

Boshqa turlar singari, mantiqiy ma'lumotlar turi ham o'zgaruvchilarda saqlanishi mumkin.

var myBool = 5 > 8; // yolg'on

5 8 dan katta bo'lmagani uchun myBool noto'g'ri bo'ladi.

JavaScript-da kodlash jarayonida siz mantiqiy ma'lumotlar qanday ishlashi va haqiqatni baholash funktsiyalari va operatsiyalari dastur oqimini qanday o'zgartirishi bilan tanishasiz.

Massivlar

Massiv bitta o'zgaruvchida bir nechta qiymatlarni o'z ichiga olishi mumkin. Bu shuni anglatadiki, siz qiymatlar ro'yxatini massiv ichida saqlashingiz va ular orqali takrorlashingiz mumkin.

Massivdagi har bir qiymat element deb ataladi. Indeks yordamida massiv elementlariga kirishingiz mumkin.

Massivlar kvadrat qavslar bilan belgilanadi.

String qatori quyidagicha ko'rinadi:

var fish = ["akula", "katta baliq", "masxaraboz", "ilan balig'i"];

Baliq o'zgaruvchisini chaqirib, siz natijaga erishasiz:

["akula", "katta baliq", "masxaraboz", "ilan balig'i"]

Massivlar juda moslashuvchan ma'lumotlar turidir, chunki ular o'zgaruvchan: siz elementlarning qiymatlarini qo'shishingiz, olib tashlashingiz va o'zgartirishingiz mumkin.

Ob'ektlar

JavaScript-dagi obyekt kalit: qiymat juftliklaridan iborat.

Obyekt sintaksisi kalit:qiymat juftliklaridan iborat. Ob'ekt ikki tomondan jingalak qavslar bilan ajratiladi (()).

Ob'ektdagi juftliklar bo'shliqlar bilan ajratiladi:

var sammy = (firstName:"Wally", familiya:"Shark", rang:"ko'k", joylashuv:"okean");

Ob'ektni bir nechta satrlarga ham yozish mumkin (bu ayniqsa katta ob'ektlar uchun to'g'ri keladi).

var Wally = (
ismingiz: "Wally",
familiyasi: "Shark",
rang: "ko'k",
Manzil: "Okean"
};

Bir nechta ma'lumotlar turlari bilan ishlash

Siz yaratgan har bir dastur bir nechta ma'lumotlar turlarini o'z ichiga olishi mumkin, ammo operatsiyalar odatda bitta ma'lumot turida amalga oshiriladi. raqamlarga matematika, satrlarga esa kesish qo'llaniladi.

Barcha turdagi ma'lumotlar bilan ishlaydigan operatorlardan foydalangan holda (masalan, + operatori raqamlarni qo'shishi yoki qatorlarni birlashtirishni amalga oshirishi mumkin), siz kutilmagan natijalarga erishishingiz mumkin.

Agar siz birlashtirish uchun o'zgaruvchi yaratsangiz, JavaScript har bir elementni satr sifatida izohlaydi.

var o = "Okean" + 5 + 3;

O o'zgaruvchisini chaqirish orqali siz quyidagi natijaga erishasiz:

Biroq, agar satr avval raqamlarni, keyin esa satrni o'z ichiga olsa, + operatori qo'shish va keyin birlashtirishni amalga oshiradi:

var p = 5 + 3 + "Okean";
8Okean

Natijalar oldindan aytib bo'lmaydigan bo'lgani uchun, bitta ma'lumot turida operatsiyalar va usullarni bajarish qulayroqdir. Biroq, JavaScript, ba'zi boshqa dasturlash tillarida bo'lgani kabi, ma'lumotlar turlarini aralashtirishda xatolarni qaytarmaydi.

Xulosa

Endi siz JavaScript ma'lumotlar turlari bilan tanishsiz. Bu yerda keltirilgan turlarning har biri JavaScript dasturlarini yozishda muhim ahamiyatga ega.

Teglar: O'zgaruvchi - bu qiymat berilgan identifikator. O'zgaruvchiga dasturda kirish mumkin, shuning uchun unga tayinlangan qiymat bilan ishlaydi.

JavaScript o'zgaruvchisining o'zi unda saqlanadigan qiymatlar turi haqida ma'lumotni o'z ichiga olmaydi. Bu shuni anglatadiki, masalan, o'zgaruvchiga satr yozish orqali siz keyinchalik unga raqam yozishingiz mumkin. Bunday operatsiya dasturda xatolikka olib kelmaydi. Shuning uchun JavaScript ba'zan "tiplanmagan" til deb ataladi.

O'zgaruvchidan foydalanishdan oldin uni var yoki let kalit so'zi yordamida e'lon qilish kerak. Agar doimiy haqida gapiradigan bo'lsak, const kalit so'zi ishlatiladi. Siz ushbu kalit so'zlardan foydalanmasdan o'zgaruvchini e'lon qilishingiz va unga qiymat berishingiz mumkin, lekin buni qilish tavsiya etilmaydi.

Kalit so'z var ES2015 standartidan oldin var kalit so'zidan foydalanilgan yagona yo'l o'zgaruvchan deklaratsiyalar.

Var a = 0
Agar siz ushbu konstruktsiyada var ni o'tkazib yuborsangiz, qiymat e'lon qilinmagan o'zgaruvchiga tayinlanadi. Ushbu operatsiyaning natijasi dasturning qaysi rejimda bajarilishiga bog'liq.

Shunday qilib, agar qattiq rejim deb ataladigan rejim yoqilgan bo'lsa, bu xatolikka olib keladi. Agar qat'iy rejim yoqilmagan bo'lsa, o'zgaruvchi bilvosita e'lon qilinadi va global ob'ektga tayinlanadi. Xususan, bu shuni anglatadiki, funktsiyada shu tarzda e'lon qilingan o'zgaruvchi funktsiya tugallangandan keyin ham mavjud bo'lib qoladi. Odatda, funktsiyalarda e'lon qilingan o'zgaruvchilar ularning doirasidan "tashqariga chiqmasligi" kutiladi. Bu shunday ko'rinadi:

NotVar() funksiyasi ( bNotVar = 1 //bunday qilmaslik yaxshiroq) notVar() console.log(bNotVar)
1 konsolda paydo bo'ladi, hech kim odatda dasturdan bunday xatti-harakatni kutmaydi, bNotVar = 1 ifodasi o'zgaruvchini e'lon qilish va ishga tushirishga urinish emas, balki o'zgaruvchidan tashqarida joylashgan o'zgaruvchiga kirishga urinish kabi ko'rinadi. funktsiya (bu juda normal). Natijada, yashirin o'zgaruvchan deklaratsiyalar kodni o'qiyotganlarni chalkashtirib yuboradi va dasturning kutilmagan xatti-harakatlariga olib kelishi mumkin. Keyinchalik biz ikkala funktsiyalar va doiralar haqida gaplashamiz, ammo hozircha ifodaning ma'nosi o'zgaruvchini e'lon qilish bo'lsa, har doim maxsus kalit so'zlardan foydalanishga harakat qilamiz. Agar ushbu misolda funktsiya tanasi var bNotVar = 1 sifatida qayta yozilgan bo'lsa, yuqoridagi kod fragmentini ishga tushirishga urinish xato xabariga olib keladi (uni brauzer konsolida ko'rishingiz mumkin).

Misol uchun, u quyidagicha ko'rinishi mumkin: Tugallanmagan ReferenceError: bNotVar aniqlanmagan. Uning ma'nosi dasturning mavjud bo'lmagan o'zgaruvchi bilan ishlay olmasligi bilan bog'liq. Kutilmaganda o'zini tutishi mumkin bo'lgan tushunarsiz kod yozishdan ko'ra, dasturni birinchi marta boshlaganingizda bunday xato xabarini ko'rish yaxshiroqdir.

Agar o'zgaruvchini e'lon qilishda u ishga tushirilmasa yoki hech qanday qiymat tayinlanmasa, unga avtomatik ravishda noaniq qiymat beriladi.

Var a //typeof a === "aniqlanmagan"
var kalit so'zi bilan e'lon qilingan o'zgaruvchilar ko'p marta qayta e'lon qilinishi mumkin, ularga yangi qiymatlar tayinlanadi (lekin bu kodni o'qiyotgan odamni chalkashtirib yuborishi mumkin).

Var a = 1 var a = 2
Bir ifodada bir nechta o'zgaruvchilarni e'lon qilishingiz mumkin:

Var a = 1, b = 2
O'zgaruvchining doirasi - bu o'zgaruvchiga kirish mumkin bo'lgan (ko'rinadigan) dastur maydoni.

Funktsiyadan tashqarida var kalit so'zi bilan ishga tushirilgan o'zgaruvchi global ob'ektga tayinlanadi. U global miqyosga ega va dasturning istalgan joyidan foydalanish mumkin. Agar oʻzgaruvchi funksiya ichidagi var kalit soʻzi yordamida eʼlon qilingan boʻlsa, u faqat shu funksiya ichida koʻrinadi va u uchun mahalliy oʻzgaruvchi hisoblanadi.

Agar var ishlatadigan funksiya nomi global miqyosdagi oʻzgaruvchi bilan bir xil boʻlgan oʻzgaruvchini eʼlon qilsa, u global oʻzgaruvchini “bekor qiladi”. Ya'ni, funksiya ichidagi bunday o'zgaruvchiga kirishda uning mahalliy versiyasidan foydalaniladi.

Bloklar (jingalak qavslar ichiga olingan kod sohalari) yangi doiralarni yaratmasligini tushunish muhimdir. Yangi hudud Visibility funksiya chaqirilganda yaratiladi. var kalit so'zi blok doirasi emas, balki funktsional doirasi deb ataladigan narsaga ega.

Agar o'zgaruvchi funktsiya kodida e'lon qilingan bo'lsa, u butun funktsiya kodiga ko'rinadi. Agar o'zgaruvchi funktsiya kodining oxirida var yordamida e'lon qilingan bo'lsa ham, unga kodning boshida kirish mumkin, chunki JavaScript o'zgaruvchini ko'tarish mexanizmiga ega. Ushbu mexanizm o'zgaruvchan deklaratsiyalarni "ko'taradi", lekin ularni ishga tushirish operatsiyalarini emas. Bu chalkashlik manbai bo'lishi mumkin, shuning uchun funktsiyangizning boshida o'zgaruvchilarni e'lon qilishni odat qiling.

▍let kalit so'zi Let kalit so'zi ES2015 da kiritilgan va uni sodda qilib aytganda var ning "blok" versiyasi deb atash mumkin. Let kalit so'zi bilan e'lon qilingan o'zgaruvchilar u e'lon qilingan blok, bayonot yoki iboraga va ichki bloklarga qamrab olinadi.

"Let" so'zining o'zi unchalik aniq ko'rinmasa, uning o'rniga "yo'l" so'zini ishlatishni tasavvur qilishingiz mumkin. Keyin let color = "qizil" iborasini ingliz tiliga quyidagicha tarjima qilish mumkin: "rang qizil bo'lsin", rus tiliga esa quyidagicha: "rang qizil bo'lsin".

Let kalit so'zidan foydalanish orqali siz var kalit so'zi bilan kelgan noaniqliklardan qochishingiz mumkin (masalan, let yordamida bir xil o'zgaruvchini ikki marta e'lon qila olmaysiz). Funktsiyadan tashqarida let dan foydalanish, masalan, tsikllarni ishga tushirishda global o'zgaruvchilar yaratmaydi.

Masalan, ushbu kod xatolik hosil qiladi:

uchun (i = 0; i< 5; i++) { console.log(i) } console.log(i)
Agar sikl ishga tushirilganda var kalit so'zi yordamida hisoblagich i e'lon qilinsa, u o'z ishini tugatgandan so'ng i tsikldan tashqarida mavjud bo'ladi.

Hozirgi kunda zamonaviy standartlar asosida JS dasturlarini ishlab chiqishda var dan butunlay voz kechib, faqat let va const kalit so'zlaridan foydalanish juda mumkin.

▍const kalit so'zi Var yoki let kalit so'zlari yordamida e'lon qilingan o'zgaruvchilar qiymatlari ustiga yozilishi mumkin. Agar bu kalit so'zlar o'rniga const ishlatilsa, uning yordamida e'lon qilingan va ishga tushirilgan konstantaga yangi qiymat berish mumkin emas.

Const a = "test"
Bu misolda a doimiysiga yangi qiymat berish mumkin emas. Ammo shuni ta'kidlash kerakki, agar a raqam kabi ibtidoiy qiymat emas, balki ob'ekt bo'lsa, const kalit so'zidan foydalanish bu ob'ektni o'zgarishlardan himoya qilmaydi.

Ob'ekt o'zgaruvchida saqlanadi, deyishganda, ular aslida nimani nazarda tutadi, o'zgaruvchi ob'ektga havolani saqlaydi. Ushbu havolani o'zgartirish mumkin emas, lekin havola olib boradigan ob'ektni o'zgartirish mumkin.

const kalit so'zi ob'ektlarni o'zgarmas qilib qo'ymaydi. U shunchaki tegishli konstantalarda yozilgan ularga havolalarni o'zgarishlardan himoya qiladi. Bu shunday ko'rinadi:

Const obj = () console.log(obj.a) obj.a = 1 //works console.log(obj.a) //obj = 5 //xatoga olib keladi
Initsializatsiya paytida obj doimiysiga yangi bo'sh ob'ekt yoziladi. Uning mavjud bo'lmagan a xususiyatiga kirishga urinish xatolikka olib kelmaydi. Konsol aniqlanmagan bo'ladi. Shundan so'ng biz ob'ektga yangi xususiyat qo'shamiz va unga yana kirishga harakat qilamiz. Bu safar ushbu xususiyatning qiymati konsolda 1 ga teng. Agar siz misolning oxirgi satriga izohni olib tashlasangiz, ushbu kodni bajarishga urinish xatolikka olib keladi.

const kalit so'zi let ga juda o'xshaydi, xususan, u blok doirasiga ega.

Zamonaviy sharoitda, qiymatlari o'zgartirilishi rejalashtirilmagan barcha ob'ektlarni e'lon qilish uchun const kalit so'zidan foydalanish juda maqbuldir, faqat alohida holatlarda ruxsat beriladi. Nega? Gap shundaki, dasturni murakkablashtirmaslik va xatolarga yo'l qo'ymaslik uchun mavjud bo'lgan eng oddiy konstruktsiyalardan foydalanishga intilish yaxshiroqdir.

JavaScript ma'lumotlar turlari ba'zan "tiplanmagan" til deb ataladi, ammo bunday emas. To'g'ri, siz har xil turdagi qiymatlarni o'zgaruvchilarga yozishingiz mumkin, ammo JavaScript-da hali ham ma'lumotlar turlari mavjud. Xususan, biz ibtidoiy va ob'ektli ma'lumotlar turlari haqida gapiramiz.

Qiymatning ma'lumotlar turini aniqlash uchun typeof operatoridan foydalanishingiz mumkin. Operand turini ko'rsatadigan qatorni qaytaradi.

▍Ibtidoiy ma'lumotlar turlari Mana JavaScript ibtidoiy ma'lumotlar turlari ro'yxati:
  • raqam
  • ip
  • mantiqiy (mantiqiy qiymat)
  • null (maxsus qiymat null)
  • aniqlanmagan (maxsus qiymat aniqlanmagan)
  • belgi (belgi, maxsus holatlarda qo'llaniladi, ES6 da kiritilgan)
Bu yerda ma'lumotlar turlarining nomlari typeof operatori tomonidan qaytarilgani uchun berilgan.

Keling, ushbu ro'yxatdagi eng ko'p ishlatiladigan ma'lumotlar turlari haqida gapiraylik.

Raqam turi JavaScript-da turdagi raqam qiymatlari 64 bitli ikki aniqlikdagi suzuvchi nuqtali raqamlar sifatida taqdim etiladi.

Kodda sonli harflar o'nlik sanoq sistemasida butun va kasr sifatida ifodalanadi. Raqamlarni yozish uchun boshqa usullardan foydalanishingiz mumkin. Masalan, agar sonli harfning boshida 0x prefiksi mavjud bo'lsa, u o'n oltilik yozuvda yozilgan raqam sifatida qabul qilinadi. Raqamlar ko'rsatkichli yozuvda ham yozilishi mumkin (bunday raqamlarda e harfini topish mumkin).

Mana butun sonlarni yozishga misollar:

10 5354576767321 0xCC // o'n oltilik raqam
Mana kasrlar.

3.14 .1234 5.2e4 //5.2 * 10^4
Raqamli harflar (bu xatti-harakat ba'zi boshqa ibtidoiy turlar uchun ham xosdir), siz ularga ob'ektlar sifatida kirishga harakat qilganingizda, operatsiya davomida avtomatik ravishda mos keladigan ob'ektlarga aylantiriladi, ular "ob'ektni o'rash" deb ataladi. Bu holda biz Number ob'ektini o'rash haqida gapiramiz.

Bu erda, masalan, raqamli harfni o'z ichiga olgan a o'zgaruvchisiga kirishga urinish Google Chrome konsolidagi ob'ekt sifatida qanday ko'rinadi.

Raqamli ob'ektni o'rash bo'yicha maslahat

Agar, masalan, Number turidagi ob'ektning toString() usulidan foydalansangiz, u raqamning satrli tasvirini qaytaradi. Tegishli buyruq quyidagicha ko'rinadi, u brauzer konsolida (va oddiy kodda) quyidagicha bajarilishi mumkin:

A.toString()
Usul nomidan keyin qo'sh qavsga e'tibor bering. Agar siz ularni ta'minlamasangiz, tizim xatolikka yo'l qo'ymaydi, lekin kutilgan natija o'rniga konsolda 5 raqamining satr tasviriga umuman o'xshamaydigan narsani ko'rasiz.

Global Number ob'ekti konstruktor sifatida ishlatilishi mumkin, uning yordamida yangi raqamlar yaratilishi mumkin (ammo bu shaklda u deyarli ishlatilmaydi), u o'z misollarini yaratmasdan (ya'ni ma'lum raqamlar) mustaqil ob'ekt sifatida ham ishlatilishi mumkin. yordami bilan ifodalanadi). Masalan, uning Number.MAX_VALUE xususiyati JavaScript-da ifodalanishi mumkin bo'lgan maksimal raqamli qiymatni o'z ichiga oladi.

Tur qatori satr turining qiymatlari belgilar ketma-ketligidir. Bunday qiymatlar bitta yoki ikkita tirnoq ichiga olingan satr harflari sifatida belgilanadi.

"Bir qator" "Boshqa qator"
String qiymatlari teskari chiziq belgisi yordamida bir nechta qismlarga bo'linishi mumkin.

"A\string"
Chiziqda qochish ketma-ketliklari bo'lishi mumkin, ular chiziq konsolga chiqarilganda izohlanadi. Masalan, \n ketma-ketligi yangi qator belgisini bildiradi. Teskari qiyshiq chiziq belgisi bir xil qo'shtirnoq ichiga olingan satrlarga qo'shtirnoq qo'shish uchun ham ishlatilishi mumkin. Qo'shtirnoq belgisidan \ bilan qochish tizim uni maxsus belgi sifatida ko'rib chiqmasligiga olib keladi.

"Men dasturchiman"
Satrlarni + operatori yordamida birlashtirish mumkin.

"A" + "string"

Shablon harflari ES2015 da shablon literallari yoki shablon satrlari deb ataladigan narsa paydo bo'ldi. Ular orqa qo'shtirnoq (`) ichiga olingan satrlar va ba'zi qiziqarli xususiyatlarga ega.

`string`
Misol uchun, siz JavaScript ifodalarini shablon harflariga baholash natijasi bo'lgan ma'lum qiymatlarni almashtirishingiz mumkin.

`$(bir narsa) bilan string` `$(something+somethingElse) bilan string` `$(obj.something())`li satr`
Orqa tirnoqlardan foydalanish bir nechta satrlarda satr harflarini yozishni osonlashtiradi:

`$(bir narsa) bo'lgan satr`

Boolean tipidagi JavaScript mantiqiy qiymatlar bilan ishlashda foydalaniladigan bir juft zahiralangan so'zlarga ega: true va false. Taqqoslash operatorlari, masalan == , === ,< , >, rost yoki yolg'onni qaytaring.

Mantiqiy ifodalar dastur oqimini boshqarishga yordam berish uchun if va while kabi iboralarda ishlatiladi.

Shuni ta'kidlash kerakki, haqiqiy yoki noto'g'ri qiymat kutilgan joyda, siz til tomonidan avtomatik ravishda rost (haqiqat) yoki noto'g'ri (noto'g'ri) sifatida baholanadigan boshqa qiymatlardan foydalanishingiz mumkin.

Xususan, quyidagilar noto'g'ri qiymatlar:

0 -0 NaN undefined null "" //bo'sh qator
Qolgan qiymatlar to'g'ri.

Null Type JavaScript maxsus qiymatga ega, null , bu qiymat yo'qligini bildiradi. Shunga o'xshash qiymatlar boshqa tillarda ham qo'llaniladi Turi undefined Muayyan o'zgaruvchiga yozilgan aniqlanmagan qiymat bu o'zgaruvchi ishga tushirilmaganligini va uning qiymati yo'qligini bildiradi.

Bu qiymat qaytish kalit so'zi yordamida natijalari aniq qaytarilmaydigan funksiyalardan avtomatik ravishda qaytariladi. Agar funktsiya chaqirilganda ko'rsatilmagan parametrni qabul qilsa, u ham undefined ga o'rnatiladi.

Undefined qiymatini tekshirish uchun siz quyidagi konstruktsiyadan foydalanishingiz mumkin.

O'zgaruvchining turi === "aniqlanmagan"

▍Ob'ektlar Barcha ibtidoiy bo'lmagan qiymatlar ob'ekt turiga tegishli. Biz funktsiyalar, massivlar, biz "ob'ektlar" deb ataydigan narsalar va boshqa ko'plab ob'ektlar haqida gapiramiz. Bu ma'lumotlarning barcha turlari ob'ekt turiga asoslanadi va ular bir-biridan ko'p jihatdan farq qilsa-da, umumiy tomonlari ham ko'p.Ifodalar Ifodalar - bajarilgan hisob-kitoblar asosida qayta ishlanishi va ma'lum bir qiymat olishi mumkin bo'lgan kod bo'laklari. . JavaScript-da ifodalarning bir nechta toifalari mavjud Arifmetik ifodalar Bu turkumga raqamlarga baholovchi ifodalar kiradi.

1/2 i++ i -= 2 i * 2

String ifodalari Bunday ifodalarni baholash natijasi qatorlardir.

"A " + "string" "A " += "string"

Birlamchi ifodalar Literallar, konstantalar va identifikatorlarga havolalar shu turkumga kiradi.

2 0,02 "bir narsa" rost noto'g'ri bu //ijro konteksti, joriy ob'ektga havola aniqlanmagan i //bu erda i o'zgaruvchi yoki doimiy
Bunga ba'zi JavaScript kalit so'zlari va konstruktsiyalari ham kiradi.

Funksiya klassi funksiyasi* //hosil generatori //generator unumdorligini to‘xtatib turish/davom etish buyrug‘i* //boshqa iterator yoki generator asinx funksiyasiga vakolat berish* //asinxron funksional ifoda kutilmoqda //asinxron funksiya bajarilishini kutishni tashkil qilish /naqsh /i // muntazam ifoda() //guruhlash

Massivlar va obyektlar uchun initsializatsiya ifodalari //massiv literal () //obyekt literal (a: 1, b: 2) (a: (b: 1)) Mantiqiy ifodalar Mantiqiy ifodalardan foydalanish mantiqiy operatorlar, ularni hisoblash natijasi mantiqiy qiymatlardir.

A && b a || b!a

Xususiyatga kirish ifodalari Ushbu ifodalar ob'ektlarning xossalari va usullariga kirish imkonini beradi.

Object.property //ob'ekt ob'ektining xususiyatini (yoki usulini) chaqirish["xususiyat"]

Ob'ekt yaratish ifodalari new object() new a(1) new MyRectangle("name", 2, (a: 4)) Funktsiyani e'lon qilish iboralari function() () function(a, b) (qaytish a * b ) (a, b) => a * b a => a * 2 () => ( qaytish 2 ) Ifodalarni chaqirish Bunday ifodalar obyektlarning funksiyalari yoki usullarini chaqirish uchun ishlatiladi.

A.x(2) window.resize()

Ob'ektlar bilan ishlash Biz yuqorida ob'ektlarga duch keldik, ob'ekt literallari haqida gapirib, ularning usullarini chaqirish va ularning xususiyatlariga kirish. Bu erda biz ob'ektlar haqida batafsilroq gaplashamiz, xususan, biz prototipli meros mexanizmini va sinf kalit so'zidan foydalanishni ko'rib chiqamiz.▍Prototipli meros JavaScript zamonaviy dasturlash tillari orasida prototip merosni qo'llab-quvvatlashi bilan ajralib turadi. . Ko'pgina ob'ektga yo'naltirilgan tillar sinfga asoslangan meros modelidan foydalanadi.

Har bir JavaScript ob'ekti prototipi bo'lgan boshqa ob'ektga ishora qiluvchi maxsus xususiyatga (__proto__) ega. Ob'ekt prototipning xususiyatlari va usullarini meros qilib oladi.

Aytaylik, bizda ob'ekt harfi yordamida yaratilgan ob'ekt bor.

Const car = ()
Yoki Object konstruktori yordamida obyekt yaratdik.

Const car = new Object()
Ushbu holatlarning har qandayida avtomobil ob'ektining prototipi Object.prototype bo'ladi.

Agar siz ob'ekt bo'lgan massiv yaratsangiz, uning prototipi Array.prototype ob'ekti bo'ladi.

Const list = //yoki shunday const list = new Array()
Buni quyidagicha tekshirishingiz mumkin.

Avtomobil.__proto__ == Object.prototype //haqiqiy avtomobil.__proto__ == new Object().__proto__ //haqiqiy ro'yxat.__proto__ == Object.prototype //noto'g'ri ro'yxat.__proto__ == Massiv.prototip //haqiqiy ro'yxat.__proto__ == new Array().__proto__ //to'g'ri
Bu erda biz __proto__ xususiyatidan foydalandik; u ishlab chiquvchi uchun mavjud bo'lishi shart emas, lekin odatda unga kirish mumkin. Shuni ta'kidlash kerakki, ko'proq ishonchli tarzda ob'ektning prototipini olish uchun global getPrototypeOf() usulidan foydalanish kerak Ob'ekt.

Object.getPrototypeOf(yangi Object())
Prototipning barcha xususiyatlari va usullari ushbu prototipga ega bo'lgan ob'ekt uchun mavjud. Bu erda, masalan, massiv uchun ularning ro'yxati qanday ko'rinadi.


Massiv maslahati

Barcha ob'ektlar uchun asosiy prototip Object.prototype hisoblanadi.

Massiv.prototip.__proto__ == Ob'ekt.prototip
Object.prototype prototipiga ega emas.

Yuqorida biz ko'rgan narsa prototip zanjirining namunasidir.

Ob'ektning xossasi yoki usuliga kirishga harakat qilganda, agar ob'ektning o'zida bunday xususiyat yoki usul bo'lmasa, ularni qidirish uning prototipida, so'ngra prototip prototipida va shunga o'xshash kerakli xususiyat topilmaguncha amalga oshiriladi, yoki prototiplar zanjiri tugamaguncha.

Yangi operator yordamida ob'ektlar yaratish va ob'ekt yoki massiv literallaridan foydalanish bilan bir qatorda, Object.create() usuli yordamida ob'ekt namunasini yaratishingiz mumkin. Ushbu usulga o'tkazilgan birinchi argument u yaratgan ob'ektning prototipi bo'ladigan ob'ektdir.

Const car = Object.create (Object.prototype)
Siz isPrototypeOf() usuli yordamida ob'ekt boshqa ob'ektning prototip zanjirining bir qismi ekanligini tekshirishingiz mumkin.

Const ro'yxati = Array.prototype.isPrototypeOf(ro'yxat)

Konstruktor funktsiyalari Yuqorida biz tilda mavjud bo'lgan konstruktor funksiyalaridan foydalangan holda yangi ob'ektlar yaratdik (ularni chaqirishda new kalit so'zi ishlatiladi). Bunday funktsiyalarni o'zingiz yaratishingiz mumkin. Keling, bir misolni ko'rib chiqaylik.

Function Shaxs(ism) ( this.name = name ) Person.prototype.hello = function() ( console.log(this.name) ) let person = new Person("Flavio") person.hello() console.log( Person.prototype.isPrototypeOf(shaxs))
Bu erda biz konstruktor funksiyasini yaratamiz. Chaqirilsa, u yaratiladi yangi ob'ekt, bu kalit bilan ko'rsatiladi bu so'z konstruktor tanasida. Biz ushbu ob'ektga nom xossasini qo'shamiz va unga konstruktorga uzatilgan narsani yozamiz. Ushbu ob'ekt konstruktordan avtomatik ravishda qaytariladi. Konstruktor funksiyasidan foydalanib, nom xossalari ular yaratilganda konstruktorga uzatilgan narsalarni o'z ichiga oladigan ko'plab ob'ektlarni yaratishingiz mumkin.

Konstruktorni yaratgandan so'ng, biz uning prototipiga funktsiyani qo'shamiz, bu funksiya yordamida yaratilgan ob'ektning name xususiyatining qiymatini konsolga chop etadi. Ushbu konstruktor yordamida yaratilgan barcha ob'ektlar bir xil prototipga ega bo'ladi va shuning uchun bir xil hello() funktsiyasidan foydalanadi. Buni Person tipidagi boshqa ob'ekt yaratish va uning hello() funksiyasini misolda mavjud bo'lgan ob'ekt funktsiyasi bilan solishtirish orqali osongina tekshirish mumkin (bu holda funksiya nomi qavssiz yoziladi).

▍Klasslar ES6 standartida JavaScript “sinf” tushunchasini kiritdi.

Ilgari JavaScript faqat yuqorida tavsiflangan prototip meros mexanizmidan foydalanishi mumkin edi. JSga boshqa tillardan kelgan dasturchilar uchun bu mexanizm g'ayrioddiy ko'rinardi. Shuning uchun tilda sinflar paydo bo'ldi, ular mohiyatiga ko'ra meros mexanizmi prototipi uchun "sintaktik shakar" hisoblanadi. Ya'ni, yaratilgan ob'ektlar an'anaviy usul, va sinflar yordamida yaratilgan ob'ektlar prototiplarga ega.

Sinf deklaratsiyasi Sinf deklaratsiyasi shunday ko'rinadi.

Sinf shaxsi ( konstruktor(nom) ( this.name = name ) salom() ( "Salom, men " + this.name + "." ni qaytaring) )
Sinf yangi ClassIdentifier() konstruksiyasi yordamida yangi ob'ektlarni yaratish uchun ishlatilishi mumkin bo'lgan identifikatorga ega.

Yangi obyekt yaratilganda konstruktor usuli chaqiriladi va unga parametrlar uzatiladi.

Siz usullarni sinfda e'lon qilishingiz mumkin. Bizning holatda, hello() - bu sinf asosida yaratilgan barcha ob'ektlar tomonidan chaqirilishi mumkin bo'lgan usul. Person sinfidan foydalangan holda yangi ob'ektni yaratish shunday ko'rinadi.

Const flavio = yangi odam("Flavio") flavio.hello()

Sinfga asoslangan meros sinflari boshqa sinflarni kengaytirishi mumkin. Bunday sinflardan yaratilgan ob'ektlar asl sinfning usullarini ham, kengaytirilgan sinfda ko'rsatilgan usullarni ham meros qilib oladi.

Agar boshqa sinfni kengaytiruvchi sinf (ushbu sinfning pastki sinfi) nomi ota-sinfniki bilan bir xil bo'lgan usulga ega bo'lsa, bu usul asl sinfdan ustun turadi.

Class Programmer extensions Person ( hello() ( return super.hello() + " Men dasturchiman." ) ) const flavio = new Programmer("Flavio") flavio.hello()
Yuqoridagi misoldagi hello() usulini chaqirish Salom, men Flavioman qatorini qaytaradi. Men dasturchiman.

Sinflar o'zgaruvchilar (xususiyatlar) mavjudligini ta'minlamaydi, sinflar yordamida yaratilgan ob'ektlarning xususiyatlari konstruktorda sozlanishi kerak.

Sinf ichida siz super kalit so'zidan foydalanib, ota-sinfga kirishingiz mumkin.

Statik usullar Sinfda tavsiflangan usullarni sinfdan yaratilgan ob'ektlarga kirish orqali chaqirish mumkin, lekin sinfning o'ziga kirish orqali emas. Statik usullarni sinfga to'g'ridan-to'g'ri kirish orqali chaqirish mumkin.Private Methods JavaScript-da xususiy usullarni e'lon qilish imkonini beruvchi o'rnatilgan mexanizm mavjud emas. Bu cheklovni, masalan, yopilishlar yordamida yengib o'tish mumkin Qabul qiluvchilar va sozlagichlar. Sinfdagi usullarni get yoki set kalit so'zlari bilan oldindan belgilash orqali aniqlashingiz mumkin. Bu sizga qabul qiluvchilar va sozlagichlar - sinf asosida yaratilgan ob'ektlarning xususiyatlariga kirishni boshqarish uchun ishlatiladigan funktsiyalarni yaratishga imkon beradi. Pseudo-xususiyatning qiymatini o'qishga harakat qilganingizda qabul qiluvchi chaqiriladi va unga yangi qiymat yozmoqchi bo'lganingizda sozlashchi chaqiriladi.

Sinf odami ( konstruktor(ism) ( this.userName = name ) set name(qiymat) ( this.userName = value ) get name() ( this.userName ni qaytaring ) )

Xulosa Ushbu materialda biz o'zgaruvchilar, ma'lumotlar turlari, ifodalar va JavaScript-da ob'ektlar bilan ishlash haqida gaplashdik. Keyingi materialimizning mavzusi funksiyalar bo'ladi.

Hurmatli kitobxonlar! Agar siz JS-da uzoq vaqtdan beri yozayotgan bo'lsangiz, sinf kalit so'zining tilda paydo bo'lishiga qanday munosabatda ekanligingizni ayting.

Ushbu qo'llanmada biz juda muhim tushunchani - JavaScript ma'lumotlar turlarini tanishtiramiz. Ushbu kontseptsiyaga jiddiy e'tibor qaratishingizni tavsiya qilamiz - agar siz uni boshidanoq tushunmasangiz, unda siz yaratgan dasturning g'alati xatti-harakatlariga tez-tez duch kelishingiz kerak bo'ladi.

Dinamik yozish

Jarayonda kompyuter dasturlari har biri dasturlash tilida qayta ishlanishi mumkin bo'lgan va ma'lum bir ma'lumot turiga tegishli bo'lgan turli xil qiymatlarni boshqarish.

JavaScript-da ma'lumotlar turlarini ikki toifaga bo'lish mumkin: oddiy (ibtidoiy deb ham ataladi) va kompozit (shuningdek, havola yoki ob'ekt deb ataladi).

JavaScript zaif terilgan yoki dinamik dasturlash tili bo'lib, dasturni bajarish jarayonida ma'lumotlar turlarini tezda aniqlash, tahlil qilish va kompilyatsiya qilish imkonini beradi. Bu o'zgaruvchining turini oldindan belgilashingiz shart emasligini anglatadi. Turi dasturni bajarish jarayonida avtomatik ravishda aniqlanadi.
Shunday qilib, dasturning turli qismlarida bir xil o'zgaruvchi har xil turdagi qiymatlarni olishi mumkin:

Ma'lumotlar turlari

ECMAScript® standarti quyidagi ma'lumotlar turlarini belgilaydi:

  • Oddiy (ibtidoiy deb ham ataladi) turlari:
    • Mantiqiy - ikkita mumkin bo'lgan qiymatlarni qabul qilishi mumkin, ba'zan haqiqiy va noto'g'ri deb ataladi;
    • null - null qiymati odatda ataylab mavjud bo'lmagan yoki noto'g'ri ob'ekt yoki manzilga ishora qiluvchi havolani ifodalaydi;
    • undefined - noaniq qiymat bilan ishga tushirilgan oldindan belgilangan global o'zgaruvchini bildiradi;
    • raqamli (inglizcha raqam) - 64 bitli ikkita aniqlikdagi suzuvchi nuqtali raqam formatidagi raqamli ma'lumotlar turi;
    • string (inglizcha String) - matnni ifodalash uchun ishlatiladigan belgilar ketma-ketligi;
    • icon (ing. Symbol) — maʼlumotlar turi boʻlib, uning misollari yagona va oʻzgarmasdir. (ECMAScript 6 da yangi).
  • Ob'ekt - odatda ob'ekt xususiyatlari deb ataladigan nomlangan qiymatlar to'plami.
Ibtidoiy va kompozit turlarning farqi

Har bir ma'lumot turini ko'rib chiqishdan oldin, avvalo typeof operatori bilan tanishib chiqamiz. typeof operatori o'zgaruvchining ma'lumotlar turini tavsiflovchi qatorni qaytaradi.
Keling, quyidagi misol yordamida qanday ishlashini ko'rsatamiz:

Misol skripti o'zgaruvchilarni e'lon qiladi, ularni ishga tushiradi (qiymatlarni tayinlaydi) va keyin har bir o'zgaruvchining turini chop etadi.

Primitiv va kompozit ma'lumotlar turlari o'rtasidagi farq ularning qiymatlari nusxalanganda paydo bo'ladi.

O'zgaruvchiga oddiy turdagi qiymat berilganda, qiymatning o'zi (masalan, raqam) o'zgaruvchiga yoziladi. Oddiy turdagi o'zgaruvchini boshqasiga tayinlaganimizda, u qiymatni ko'chiradi. Natijada, har bir o'zgaruvchi o'z qiymatiga ega bo'ladi va o'zgaruvchilardan biridagi o'zgarishlar boshqa o'zgaruvchining qiymatiga hech qanday ta'sir qilmaydi:

O'zgaruvchiga kompozit (e'lon) turdagi qiymatni berganimizda, o'zgaruvchiga qiymatga havola (ob'ektga havola) yoziladi. Bir o'zgaruvchini (uning qiymati kompozit qiymatga havolani o'z ichiga oladi) boshqa o'zgaruvchiga tayinlaganimizda, kompozit qiymatga havola ko'chiriladi. Natijada, ikkala o'zgaruvchi ham bir xil kompozit qiymatga ishora qiladi va bir o'zgaruvchining qiymatidagi o'zgarishlar boshqa o'zgaruvchiga ta'sir qiladi:

Ibtidoiy turlar

JavaScript-dagi barcha ma'lumotlar turlari, ob'ektlardan tashqari, o'zgarmas yoki o'zgarmasdir. Bu shuni anglatadiki, ularning qiymatlarini o'zgartirish mumkin emas, faqat yangi, boshqa qiymat bilan yoziladi. Masalan, satrlarni belgi bo'yicha sozlab bo'lmaydi - ularni faqat to'liq qayta yozish mumkin. Bunday turdagi qiymatlar "ibtidoiy" deb ataladi.

Dastur ishlashi mumkin bo'lgan eng oddiy ma'lumotlar literallar deb ataladi. Literallar - bu JavaScript-da qiymatlarni ifodalash uchun ishlatiladigan raqamlar yoki satrlar. Taqdim etilgan ma'lumotlar juda xilma-xil bo'lishi mumkin, shuning uchun ma'nolar farq qiladi har xil turlari. JavaScript-dagi eng oddiy ma'lumotlar turlari asosiy ma'lumotlar turlari deb ataladi: raqamlar, satrlar va mantiqiy. Ularning barchasi "ibtidoiy" deb tasniflanadi.

Mantiqiy (mantiqiy) turi "boolean"

Mantiqiy yoki mantiqiy qiymatlar (ularning ixtirochi nomidan keyin - Boolean) ikkita qiymatdan faqat bittasiga ega bo'lishi mumkin: rost (to'g'ri) yoki noto'g'ri (noto'g'ri). Qadriyatlar rost yoki noto'g'ri odatda taqqoslash yoki mantiqiy operatsiyalarda paydo bo'ladi.

Quyidagi dastur mantiqiy o'zgaruvchini yaratadi va keyin uning qiymatini if/else ifodasi yordamida tekshiradi:

Har qanday ifoda qiyosiy ifoda sifatida ishlatilishi mumkin. 0, null, aniqlanmagan yoki bo'sh satrni qaytaradigan har qanday ifoda false sifatida talqin qilinadi. Boshqa har qanday qiymatni belgilaydigan ifoda rost deb talqin qilinadi.

Eslatma: Mantiqiy qiymatlarni yozishda ular qo'shtirnoq ichiga qo'yilmaydi: var myVar = true;
Shu bilan birga, var myVar = "true" deb e'lon qilish qator o'zgaruvchisini yaratadi.

Raqamli ma'lumotlar turi

JavaScript-da butun son va suzuvchi nuqta soni o'rtasida hech qanday farq yo'q - asosan, JavaScript barcha raqamlarni suzuvchi nuqta qiymati sifatida ifodalaydi.

JavaScript raqamlarni ifodalash uchun IEEE-754 standarti tomonidan belgilangan 64 bitli formatdan foydalanadi. Ushbu format ±1,7976931348623157 × 10308 dan ±5 × 10 -324 oralig'idagi raqamlarni ifodalash imkoniyatiga ega.

To'g'ridan-to'g'ri dastur kodida topilgan raqam sonli harf deyiladi. O'nlik butun sonli harflardan tashqari, JavaScript o'n oltilik qiymatlarni taniydi.
O'n oltilik raqamlar 0 dan 9 gacha bo'lgan har qanday raqamlar ketma-ketligini va a dan f gacha bo'lgan harflarni o'z ichiga olishi mumkin, ular "0x" belgilar ketma-ketligi bilan boshlanishi kerak.

Var a = 255; var b = 0xFF; // 255 raqami o'n oltilik tizimda

Bundan tashqari, JavaScript maxsus raqamli qiymatlarni o'z ichiga oladi:

  • NaN (raqam yoki hisoblash xatosi emas). Satrlar yoki aniqlanmagan qiymat kabi noto'g'ri ma'lumotlar ustida noto'g'ri matematik operatsiya natijasidir.
  • Cheksizlik (ijobiy cheksizlik). Ijobiy raqam JavaScript-da ifodalash uchun juda katta bo'lsa ishlatiladi.
  • -Infinity (salbiy cheksizlik). Salbiy raqam JavaScript-da ifodalash uchun juda katta bo'lsa ishlatiladi.
  • ±0 (musbat va salbiy 0). JavaScript ijobiy va salbiy nolni ajratib turadi.
String ma'lumotlar turi

Satr turi - har biri Unicode belgisini (harflar, raqamlar, tinish belgilari, maxsus belgilar va bo'shliqlar) ifodalovchi 16 bitli qiymatlarning o'zgarmas, tartiblangan ketma-ketligi. Satrlar bo'sh bo'lishi yoki bir yoki bir nechta belgilardan iborat bo'lishi mumkin. Satrlar juft (") yoki bitta (") tirnoq yordamida yaratiladi. Bir juft qo'shtirnoq bilan ajratilgan qator qo'sh tirnoqlardan foydalanishi mumkin va aksincha, bitta qo'shtirnoq juft qo'shtirnoq bilan o'ralgan qatorda ishlatilishi mumkin:

JavaScript-da qo'sh va bitta tirnoq o'rtasida farq yo'q, lekin satr boshida va oxiridagi qo'shtirnoqlar farq qilmasligi kerak. Masalan, shunga o'xshash ibora sintaksis xatosini keltirib chiqaradi:

var firstName = "Maks"; //sintaksis xatosi - turli tirnoqlar

Eslatma: JavaScript-da C, C++ va Java tillarida char kabi maxsus bitta belgili maʼlumotlar turi mavjud emas. Bitta belgi birlik uzunligi qatori bilan ifodalanadi.

Null ma'lumotlar turi Null turi bitta maxsus qiymatni o'z ichiga oladi - null.

Null kalit so'zini funksiya yoki o'zgaruvchi nomi sifatida ishlatib bo'lmaydi. Null qiymati "bo'sh" ob'ektga havola bo'lib, maxsus maqsadga ega - odatda keyinchalik qiymat tayinlanadigan o'zgaruvchini ishga tushirish uchun ishlatiladi.

Null qiymat uchun typeof operatori "ob'ekt" qatorini qaytaradi, bu null qiymati maxsus "bo'sh" ob'ekt ekanligini ko'rsatadi.

Aniqlanmagan ma'lumotlar turi

Aniqlanmagan tur o'z turini hosil qiladi, unda bitta maxsus qiymat - aniqlanmagan. Bu var operatori yordamida e'lon qilingan, lekin ishga tushirilmagan o'zgaruvchining qiymati:

Belgilanmagan qiymat hech qachon qiymat berilmagan o'zgaruvchiga, mavjud bo'lmagan ob'ekt xususiyatiga yoki massiv elementiga kirishda qaytariladi.

Shuni ta'kidlash kerakki, qiymati aniqlanmagan o'zgaruvchi umuman aniqlanmagan o'zgaruvchidan farq qiladi:

Ushbu misolda alert() usuli aniqlanmagan yosh o'zgaruvchisining qiymatini ko'rsatadi. Ikkinchi holda, e'lon qilinmagan avtomobil o'zgaruvchisi alert() usuliga uzatiladi, bu esa xatolikka olib keladi.

Quyidagi misol yangi boshlanuvchi dasturchilar uchun biroz chalkash bo'lishi mumkin, chunki... typeof operatori ishga tushirilmagan va e'lon qilinmagan o'zgaruvchi uchun aniqlanmagan qiymatni qaytaradi:

Yuqoridagi misolda o'zgaruvchan yosh e'lon qilingan, lekin unga hech narsa yozilmagan, shuning uchun uning qiymati aniqlanmagan. Avtomobil o'zgaruvchisi e'lon qilinmagan - aslida u mavjud emas. Biroq, typeof ikkala holatda ham aniqlanmagan satrni qaytaradi. Bu, albatta, qandaydir ma'noga ega, chunki bu o'zgaruvchilarning hech biri bilan hech qanday operatsiyani bajarish mumkin emas, garchi texnik jihatdan ular butunlay boshqacha.

Eslatma: Har doim e'lon qilingan o'zgaruvchini ishga tushirish tavsiya etiladi. Bunday holda, typeof operatori o'zgaruvchi ishga tushirilmagani uchun emas, balki e'lon qilinmaganligi sababli aniqlanmaganligini bilib olasiz.

Aniqlanmagan qiymat null dan olingan, shuning uchun ECMA-262 da == ekvivalentlik operatori ularni teng deb hisoblaydi:

Null va undefined bog'langan bo'lsa-da, ular boshqacha ishlatiladi. Siz o'zgaruvchiga aniqlanmagan qiymatni belgilamasligingiz kerak, ammo bu nullga taalluqli emas. Agar kerakli ob'ekt mavjud bo'lmasa, uning o'rniga null ishlatilishi kerak. Bu bo'sh ob'ektga ko'rsatgich sifatida null kiritilganligini ko'rsatadi va uning undefined dan farqini ta'kidlaydi.

Dasturda null va undefined o'rtasidagi farqni aniqlash uchun siz === identifikatsiya operatoridan foydalanishingiz mumkin:

Ma'lumotlar turi Symbol

Belgi ECMAScript-ning 6-versiyasidan beri JavaScript-ga yangi qo'shilgan. Belgi - noyob, o'zgarmas, ibtidoiy qiymat bo'lib, noyob identifikatorlarni yaratish uchun ishlatiladi.

Belgini yaratish uchun Symbol funksiyasini chaqirish kerak:

var mySymbol = Symbol();

Belgini aniqlash uchun typeof operatoridan foydalanishingiz mumkin, agar qiymat belgi bo'lsa, satr belgisi qaytariladi:

Symbol funksiyasi ixtiyoriy parametrga ega - bu belgini tavsiflash uchun xizmat qiluvchi satr:

Xususiyat nomi satrdir, shuning uchun ob'ektlar satrlarni qiymatlar bilan bog'lash uchun ko'rib chiqilishi mumkin. Birgalikda bu ma'lumotlar bo'laklari kalit-qiymat juftligini tashkil qiladi.

IN JavaScript obyektlari ikkita sintaksisdan biri yordamida yaratilishi mumkin:

1. var obj = (); // obyekt literalidan foydalanish 2. var obj = new Object(); // konstruktor deb nomlangan usul yordamida

Ob'ektni literal yordamida yaratish muntazam o'zgaruvchini aniqlashdan boshlanadi. Ushbu bayonotning o'ng tomoni ob'ektni to'g'ridan-to'g'ri yozadi - bu vergul bilan ajratilgan juftlik ro'yxati jingalak qavslar ichiga olingan (). "nom-qiymat", jingalak qavslar ichiga olingan. Mulk nomi va qiymati ikki nuqta bilan ajratiladi:

var cat = ( "oyoqlar": 4, "ism": "Murzik", "rang": "Qizil" )

Ob'ektlarni yaratishning ikkinchi usuli Object() konstruktoridan foydalanishdir. Bunday holda, avval yangi Object() ifodasi qo'llaniladi, so'ngra olingan ob'ektning xususiyatlari aniqlanadi va ishga tushiriladi:

  • Bir o'zgaruvchini (uning qiymati kompozit qiymatga havolani o'z ichiga oladi) boshqa o'zgaruvchiga tayinlaganimizda, kompozit qiymatga havola ko'chiriladi. Natijada, ikkala o'zgaruvchi ham bir xil kompozit qiymatga ishora qiladi va bir o'zgaruvchining qiymatining o'zgarishi boshqa o'zgaruvchiga ta'sir qiladi.
  • 0, null, aniqlanmagan yoki bo'sh satrni qaytaradigan har qanday ifoda false sifatida talqin qilinadi.
  • Satrlar juft (") yoki bitta (") tirnoq yordamida yaratiladi. Bir juft qo'shtirnoq bilan ajratilgan qator qo'sh tirnoqlardan foydalanishi mumkin va aksincha, bitta qo'shtirnoq juft qo'shtirnoq bilan o'ralgan qatorda ishlatilishi mumkin.
  • Null qiymati "bo'sh" ob'ektga havola bo'lib, maxsus maqsadga ega - odatda keyinchalik qiymat tayinlanadigan o'zgaruvchini ishga tushirish uchun ishlatiladi.
  • Qiymat (aniqlanmagan) var operatori yordamida e'lon qilingan, lekin ishga tushirilmagan o'zgaruvchidir.
  • JavaScript-da ob'ektlar ikkita usuldan birida yaratilishi mumkin:
    • ob'ekt harfidan foydalanish
    • konstruktor deb ataladigan usul yordamida
  • Ob'ektda tartibsiz xususiyatlar to'plami mavjud bo'lib, ularning har biri nom va qiymatni o'z ichiga oladi. Istalgan vaqtda ob'ektga yangi nomlar qo'shishingiz yoki mavjudlarini olib tashlashingiz mumkin.