Avatar ·

ما الفرق بين 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` تقبل مصفوفة من الوسائط؟ أم هناك تفاصيل أخرى؟ هل يؤثر هذا على الأداء؟ أو هل هناك حالات تكون فيها إحدى الطريقتين أفضل من الأخرى؟ سأكون ممتنًا لشرح مفصل مع أمثلة. <<>>

الفرق الرئيسي: شكل تمرير الوسائط

لقد لاحظت الأمر بشكل صحيح. الفرق الجوهري هو