Yuqoridagi misolda biz ba'zi o'xshashliklarga ega bo'lgan 2 ta ob'ektni yaratdik. Simple_property va object_property xususiyatlari ham mavjud edi. Shubhasiz, haqiqiy kodni yozishda ko'pincha bir xil yoki o'xshash ob'ektlarni yaratish vazifasi paydo bo'ladi. Va, albatta, har bir bunday ob'ektni qo'lda yaratishimiz shart emas.
Bizga konstruktor yordamga keladi. JavaScript-dagi konstruktor sinfning bir qismi emas (chunki sinflar yo'q), faqat o'z-o'zidan funktsiya. Eng keng tarqalgan funktsiya.
make_me \u003d funktsiya (_name) {
ogohlantirish ("Men ishga tushirdim");
bu .name \u003d _name;
}
/ * Keling, bu erda nima bo'layotganini ko'rib chiqaylik. Tarjimon yangi operatorni ko'radi va uning o'ng tomonida nima borligini tekshiradi. Chunki make_me funktsiya bo'lib, uni konstruktor sifatida ishlatish mumkin, keyin xotirada yangi ob'ekt yaratiladi va make_me funktsiyasi bajariladi va bu shu yangi ob'ektga ishora qiladi. Keyinchalik, ushbu ob'ektga _name argumenti va show_name usuli bo'yicha qiymat berilgan name xususiyati qo'shiladi. Bundan tashqari (aniq qaysi daqiqada ekanligini bilmayman, lekin bu muhim emas) bola o'zgaruvchisi bizning yangi, yangi tug'ilgan ob'ektimizga ishora qila boshlaydi * /
Ogohlantirish (child.name); // Vasya
child.show_name (); // Vasya
child2.show_name (); // Piter
Child2.show_name \u003d function () (ogohlantirish ( "Men ismimni aytmayman");} // Ob'ektlarimizni istalgan vaqtda o'zgartirishimiz mumkinligini unutmang
child2.show_name (); // Men ismimni aytmayman
Child.show_name (); // Vasya - bolalar bir-biriga hech qanday ta'sir qilmaydi
* Ushbu manba kodi ta'kidlash manbai bilan ta'kidlangan.
Bundan tashqari, konstruktorni otasi bilan taqqoslashingiz mumkin - u bolani tug'diradi, unga ma'lum fazilatlarni beradi, lekin yaratilgandan so'ng darhol bola ota-onadan butunlay mustaqil bo'lib qoladi va birodarlaridan juda farq qilishi mumkin.
Agar maqolaning boshidagi ma'lumotlar turlarining tavsifini eslasak, u holda ob'ekt va uning kichik turlari (Funktsiya, Array va boshqalar) aslida yaratilgan ob'ektga funktsiya, massiv va hokazolarni beradigan konstruktorlar ekanligi aniq bo'ladi.
Shunday qilib, bu juda yaxshi. Endi biz ma'lum bir naqsh bo'yicha ob'ektlarni yaratish qobiliyatiga egamiz. Biroq, barchasi yaxshi emas. Birinchidan, biz yaratgan har bir ob'ekt va uning barcha xususiyatlari va usullari xotirada alohida o'rin egallaydi, garchi ko'p jihatdan ular takrorlansa ham. Ikkinchidan, agar ota-ona va bola o'rtasidagi aloqani saqlab qolishni istasak va barcha bolalar ob'ektlarini birdan o'zgartira olsak. Prototip bizga yordamga keladi.
Do'stlaringiz bilan baham: |