Endi biz bularning barchasi haqida juda ko'p narsalarni bilganimiz sababli, ushbu uchta satrda nimalar sodir bo'layotganini tushunishga harakat qilaylik
make_me \u003d funktsiyasi () ()
bola \u003d yangi make_me ();
ogohlantirish (child.toString ()); // natijalar
* Ushbu manba kodi ta'kidlash manbai bilan ta'kidlangan.
Birinchi satrda biz ushbu funktsiyaga ishora qiluvchi yangi funktsiya va make_me o'zgaruvchisini yaratamiz. Bu make_me ga ishora qiluvchi konstruktor xususiyatini o'z ichiga olgan funktsiya uchun make_me.prototype prototipini yaratadi.
Ammo bu hammasi emas :)
Chunki make_me funktsiyasi ham ob'ekt bo'lib, u o'z navbatida dadasi va onasiga ega, ya'ni. konstruktor va prototip. Uning konstruktori Function () tilining asl funktsiyasidir va prototipi qo'ng'iroq qilish, qo'llash va h.k. usullarini o'z ichiga olgan ob'ektdir. - aynan shu prototip tufayli har qanday funktsiyada ushbu usullardan foydalanishimiz mumkin. Shunday qilib, make_me funktsiyasi Function.prototype-ga ishora qiluvchi [] xususiyatiga ega.
O'z navbatida, Funktsiya konstruktorining prototipi ham ob'ekt bo'lib, uning konstruktori (ajablanib!) Ob'ekt (ya'ni Function.prototype. []. Constructor \u003d\u003d\u003d Object) va prototip - bu ob'ektning standart xususiyatlari va usullarini o'z ichiga olgan ob'ekt, toString, hasOwnProperty va boshqalar (boshqacha qilib aytganda - Function.prototype. [] ["hasOwnProperty"]) - bu biz barcha olingan ob'ektlarda foydalanishimiz mumkin bo'lgan bir xil usul - va bu aynan shu ob'ektning o'ziga xos usuli va meros emas. ). Qiziqarli tarzda biz har xil ob'ektlar Ob'ektdan olinganligini aniqlaymiz.
Keyinchalik davom eta olamizmi? Bunday emas. Object.prototype ob'ektning asosiy xususiyatlarini aniq o'z prototipiga ega bo'lmaganligi sababli o'z ichiga oladi. Object.prototype. [] \u003d Null; Ushbu nuqtada prototip zanjiri orqali xususiyat yoki usulni topish uchun sayohat to'xtaydi.
Yana bitta qiziqarli fakt - Ob'ektning konstruktori - bu Funktsiya. O'sha. Ob'ekt. []. Konstruktor \u003d\u003d\u003d Vazifa.
Yana bir dumaloq ma'lumotnoma mavjud - Ob'ekt konstruktori Funktsiya va Function.prototype konstruktori Ob'ektdir.
Keling, bizning misolimizga qaytaylik. Funktsiya qanday yaratilishini biz allaqachon tushungan edik, endi ikkinchi qatorga o'tamiz. U erda biz konstruktor make_me funktsiyasi va prototip make_me.prototype bo'lgan bola ob'ektini yaratamiz.
Uchinchi qatorda biz tarjimon qanday qilib boladan bolaga zanjirga ko'tarilishini ko'rmoqdamiz. [] (Aka make_me.prototip), keyin bolaga. []. [] (Aka Object.prototype), va allaqachon topilgan bajarish uchun ishga tushirilgan toString usuli.
Do'stlaringiz bilan baham: |