
Biz o’zimiz declare qilgan object’dan qandaydir methodni qidirsak, JavaScript uni topolmasa, automatik tarzda prototype ichidan qidiradi. Manashu narsaga prototype deyiladi. Array va Obyetlardagi methodlar bizga prototype orqali olib kelinadi.
- Funksiya prototype ga ega.
- Obyekt __proto__ ga ega.
Biz prototypeni tushundik (har xolda shunday deb umid qilaman).
__proto__ nima?
Bu har bir obyektdagi yashirin [[Prototype]] xossasi. __proto__ prototype chainingni ko’rsatib beradi.
Sources: https://javascript.info/prototype-inheritance

Prototype chayning nima?
Yuqorida aytdikki o’zimiz declare qilgan objectdan qandaydir methodni qidirsak Js uni automatik tarzda prototype ichidan qidiradi. JavaScript uni property ichidan topolmasa, u obyektning proto sidan qidiradi. Unda ham topolmasa chaining yuqoriga qarab xarakat qiladi. Misol uchun: 1. String.abc => 2. Object.abc => 3. null
- JavaScript String.__proto__ ichidan biz qidirayotgan prototypeni topishga xarakat qilyabti
- Topolmasa uni Object.__proto__ ichidan qidiradi.
- Unda ham topolmasa null qaytariladi. Bu holatda chaining’ning eng yuqori qismida null turadi.
Souces: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Inheritance_and_the_prototype_chain