Java scriptdagi Non-primitive sinfining yagona a'zosi


Download 0.51 Mb.
Sana06.08.2023
Hajmi0.51 Mb.
#1665463
Bog'liq
Java scriptdagi object uchun tezis


Java scriptdagi Non-primitive sinfining yagona a'zosi Object tipi.

Bu 7 ta primitive tiplardan objectning nima farqi bor ekan?


Javob esa oddiy, primitive tiplar o'zida qiymatini saqlasa, Objectlar esa o'zida reference saqlaydi.
Reference?
Bizning JavaScriptimizda xotira mavjud, bu xotirada biz ochgan o'zgaruvchilarimiz saqlanib boradi. Uning nomi Call stack(Bu yerda boshqa jarayonlar ham bo'ladi) va Heap(Objectlarimiz uchun). Mavzuyimizga oid joyiga qaytamiz. Ushbu rasmga e'tibor qarating.

Ushbu rasmda barcha jarayon aniq va tiniq ko'rsatilgan.Chapdan boshlab tushunishni boshlaymiz.


Identifier - bizning ochgan o'zgaruvchimiz nomi.
Address - O'sha o'zgaruvchimizning xotiradagi manzili.
Value - O'zgaruvchiga berilgan qiymat.
Biz yangi o'zgaruvchi ochsak, uning xotirada o'z manzili va qiymati bo'ladi.Misol uchun:
let age = 19;
Ushbu kodimizda,age - bu Identifier (o'zgaruvchi nomi),19 = bu Value (Qiymati).Xotirada esa o'zining qandaydir yagona IDsiga ega, masalan 0064CCABA21Agar, age nomli o'zgaruvchimizni dasturimizda chaqirsak, tahminan bunday hodisa ro'y beradi.age => 0064CCABA21 => 19Ya'ni, age xotiraga o'zida saqlab turgan IDni beradi, xotira esa aynan o'sha IDlik qiymatni olib beradi. Xuddi kutubxonaga borib, kitobning raqamini aytasiz va sizga o'sha kitobni berishgandek.Agarda, age ga yangi qiymat bersak, u yangi ID ochib olib, o'ziga yangi qiymat saqlab qo'yadi xolos.Mana aynan shu xususiyat tepadagi 7 ta tiplarni PRIMITIVE tip qiladi.Ya'ni o'zlarida yagona qiymatni qabul qilishadi va u qiymatdan o'zlaridan boshqa hech narsa foydalana olmaydi.
Non-primitive (Object) tipiTepadagi rasmga yana e'tibor qaratamiz

Object tipiga Array , object , functionlar kiradi.Objectlarning "reference type" deyilishiga asosiy sabab, ular Call stack(xotiramiz)da qiymatni o'zini emas, balki o'sha qiymatni Heap deb atalgan joydagi Addressini ko'rsatib yuboradi.Bu xuddi, kutubxonaga borasiz, kitobning raqamini aytasiz, ular esa sizga boshqa raqam berib boshqa kutubxonadan olishingizni aytishadi.let myObject = {age: 19};Ushbu kodimiz xotirada tahminan bunday joylashgan:myObject - bu Identifier (o'zgaruvchi nomi)0064AAABA12 - bu esa o'sha o'zgaruvchini Call Stackdagi tahminiy manzili 23VVCA020 - bu esa tepadagi manzilda turgan qiymat, (Bu Heap ga yo'naltirilgan manzil){age: 19} - bu esa Heapda 23VVCA020 manzilidagi joylashgan qiymat. Ya'ni,let myObject = 0064AAABA12 (Call stack) => 23VVCA020 (Heap manzil) => {age: 19} (Bizga keladigan qiymat);Endi esa, qaytaramiz:Objectlarning "reference type" deyilishiga asosiy sabab, ular Call stack(xotiramiz)da qiymatni o'zini emas, balki o'sha qiymatni Heap deb atalgan joydagi Addressini ko'rsatib yuboradi.Buni qanday bilamiz ?Ushbu kodga qarang:


let object_1 = {age: 19};
let object_2 = object_1;
object_2.age = 22;
console.log(object_1) // {age: 22}
Ko'rib turganingizdek, object_2 ni object_1 ga tenglashtirib qo'ydim va object_2 ni ichidagi age ni o'zgartirdim, ammo object_1 ham o'zgardi. Bunga sabab esa, mana bunday:object_1 o'zida Heap manzilni saqlab turgan edi, Misol uchun, object_1 = 23VVCA020 (HeapManzili) object_2 ni object_1 ga tenglashtirganimizda,object_2 ham 23VVCA020 ga teng bo'ldi.
Ob'ektlar mos yozuvlar bo'yicha tayinlanadi va ko'chiriladi. Boshqacha qilib aytganda, o'zgaruvchi "ob'ektni" emas, balki qiymat uchun "ma'lumotnoma" (xotiradagi manzil) ni saqlaydi. Shunday qilib, bunday o'zgaruvchidan nusxa ko'chirish yoki uni funktsiya argumenti tarzda etkazib berish ob'ektning o'zini emas, balki o'sha havolani nusxalaydi.


Muhammadjonov Sayidbek TATUFF 615-21
Download 0.51 Mb.

Do'stlaringiz bilan baham:




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling