كيف يعمل .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(