Avatar ·

كيف يعمل .prototype في JavaScript؟ اشرح بالأمثلة

مرحباً بالجميع! بدأت في تعلم JavaScript ولا أستطيع فهم الـ prototypes. قرأت الوثائق وشاهدت فيديوهات، لكني ما زلت مرتبكاً. لدي هذا الكود: ```javascript function Animal(name) { this.name = name; } Animal.prototype.sayHi = function() { console.log('Привет, я ' + this.name); }; let cat = new Animal('Барсик'); cat.sayHi(); // "Привет, я Барсик" ``` أفهم أن `sayHi` يظهر لجميع الكائنات التي تم إنشاؤها عبر `new Animal`. لكن لماذا نحتاج إلى `.prototype` أصلاً؟ لماذا لا يمكننا ببساطة إضافة الـ method مباشرة في الـ constructor؟ ```javascript function Animal(name) { this.name = name; this.sayHi = function() { console.log('Привет, я ' + this.name); }; } ``` ما الفرق؟ وما هو `__proto__`؟ رأيت أنه يستخدم أحياناً، وأحياناً يستخدم `.prototype`. هل هما نفس الشيء؟ كما أن سلسلة الـ prototypes تربكني. عندما أكتب `cat.toString()`، من أين تأتي هذه الـ method إذا لم أقم بتعريفها؟ وكيف يعمل `Object.create(