ما الفرق بين call و apply في JavaScript؟
مرحبًا أيها الزملاء! بدأت في تعلم JavaScript وواجهت الطريقتين call و apply. قرأت الوثائق لكني لم أفهم تمامًا الفرق بينهما. لدي، على سبيل المثال، كائن:
```javascript
const user = {
name: 'إيفان',
greet: function(greeting, punctuation) {
console.log(`${greeting}, ${this.name}${punctuation}`);
}
};
const admin = {
name: 'بيتر'
};
```
أريد استدعاء الدالة `greet` نيابة عن الكائن `admin`. على حد فهمي، كلتا الطريقتين تسمحان بتعيين `this`. لكن عندما جربت:
```javascript
user.greet.call(admin, 'مرحبًا', '!'); // يعمل
user.greet.apply(admin, ['مرحبًا', '!']); // يعمل أيضًا
```
الفرق فقط في أن `apply` تقبل مصفوفة من الوسائط؟ أم هناك تفاصيل أخرى؟ هل يؤثر هذا على الأداء؟ أو هل هناك حالات تكون فيها إحدى الطريقتين أفضل من الأخرى؟ سأكون ممتنًا لشرح مفصل مع أمثلة.
<<>>
الفرق الرئيسي: شكل تمرير الوسائط
لقد لاحظت الأمر بشكل صحيح. الفرق الجوهري هو