Youssef Nasr2 نشر 30 نوفمبر 2022 أرسل تقرير مشاركة نشر 30 نوفمبر 2022 السلام عليكم ما هو الفرق بين apply وcall؟ اقتباس رابط هذا التعليق شارك على الشبكات الإجتماعية More sharing options...
0 Ahmed Sadek Elamine Touahria نشر 30 نوفمبر 2022 أرسل تقرير مشاركة نشر 30 نوفمبر 2022 الاختلاف هو أن apply يتيح لك استدعاء الدالة باستخدام arguments كمصفوفة ؛ في حين تتطلب call سرد المعلمات بشكل صريح. هناك أيضًا ، اعتبارًا من ES6 ، إمكانية نشر المصفوفة لاستخدامها مع وظيفة الاستدعاء ، يمكنك رؤية التوافق هنا. 1 - apply عادةً ، عند استدعاء دالة ، تكون قيمة هذا داخل الوظيفة هي الكائن الذي تم الوصول إلى الدالة عليه. باستخدام apply () ، يمكنك تعيين قيمة عشوائية على هذا النحو عند استدعاء دالة موجودة ، دون إرفاق الوظيفة أولاً بالعنصر كخاصية. يتيح لك هذا استخدام طرق كائن واحد كوظائف عامة. يمكنك أيضًا استخدام أي نوع من الكائنات يشبه المصفوفة كمعامل ثانٍ. في الممارسة العملية ، هذا يعني أنه يجب أن يكون لها خاصية طول ، وخصائص عدد صحيح ("index") في النطاق (0 .. الطول - 1). على سبيل المثال: function wrapper() { return anotherFn.apply(null, arguments); } 2- call عادةً ، عند استدعاء دالة ، تكون قيمة هذا داخل الوظيفة هي الكائن الذي تم الوصول إلى الوظيفة عليه. باستخدام call () ، يمكنك تعيين قيمة عشوائية على هذا النحو عند استدعاء دالة موجودة ، دون إرفاق الوظيفة أولاً بالعنصر كخاصية. يتيح لك هذا استخدام طرق كائن واحد كوظائف عامة. function greet() { console.log(this.animal, "typically sleep between", this.sleepDuration); } const obj = { animal: "cats", sleepDuration: "12 and 16 hours", }; greet.call(obj); // cats call () يكافئ تقريبًا استدعاء دالة عادي ، باستثناء أنه يتم تمريره كمعامل عادي بدلاً من القيمة التي تم الوصول إلى الوظيفة من خلالها. هذا مشابه لكيفية عمل وظائف الأداة المساعدة للأغراض العامة: بدلاً من استدعاء array.map (رد نداء) ، يمكنك استخدام map (مصفوفة ، رد نداء) ، والذي يتجنب تغيير Array.prototype ، ويسمح لك باستخدام الخريطة مع كائنات تشبه المصفوفة ليست مصفوفات (على سبيل المثال ، وسيطات). const slice = Array.prototype.slice; // ... slice.call(arguments); اقتباس رابط هذا التعليق شارك على الشبكات الإجتماعية More sharing options...
السؤال
Youssef Nasr2
السلام عليكم
ما هو الفرق بين apply وcall؟
رابط هذا التعليق
شارك على الشبكات الإجتماعية
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.