كائن الحجج
في رمز الوظيفة ، يتم استخدام وسيطات الكائن الخاصة ، يمكن للمطورين الوصول إليها دون الإشارة بشكل صريح إلى أسماء المعلمات.
على سبيل المثال ، في الوظيفة sealhi () ، المعلمة الأولى هي الرسالة. يمكن أيضًا الوصول إلى هذه القيمة باستخدام الوسائط [0] ، أي قيمة المعلمة الأولى (المعلمة الأولى في الموضع 0 ، والمعلمة الثانية في الموضع 1 ، وهكذا).
لذلك ، يمكنك تجاوز الوظيفة دون تسمية المعلمات بشكل صريح:
الدالة sealhi () {if (الوسيطات [0] == "bye") {return ؛} تنبيه (وسيطات [0]) ؛}عدد معلمات الكشف
يمكنك أيضًا استخدام كائن الوسائط لاكتشاف عدد معلمات الوظيفة والإشارة إلى وسيطات السمة.
سيقوم الرمز التالي بإخراج عدد المعلمات المستخدمة لكل مكالمة إلى الوظيفة:
وظيفة howmanyargs () {Alert (edations.length) ؛} Howmanyargs ("String" ، 45) ؛ Howmanyargs () ؛ Howmanyargs (12) ؛سيتم عرض الرمز أعلاه "2" و "0" و "1" بدوره.
ملاحظة: على عكس لغات البرمجة الأخرى ، لا تتحقق ECMASCript من أن عدد المعلمات التي تم تمريرها إلى وظيفة ما يساوي عدد المعلمات المحددة بواسطة الوظيفة. يمكن للوظائف المحددة من قبل المطورين قبول أي عدد من المعلمات (وفقًا لوثائق Netscape ، حتى 255) دون رمي أي أخطاء. سيتم تمرير أي معلمات مفقودة إلى الوظيفة غير محددة ، وسيتم تجاهل الوظائف الزائدة عن الحاجة.
محاكاة الوظيفة الزائدة
استخدم كائن الوسيطات لتحديد عدد المعلمات التي تم تمريرها إلى الوظيفة ، ثم محاكاة الحمل الزائد للوظيفة:
الدالة doAdd () {if (enduces.length == 1) {Alert (الوسيطات [0] + 5) ؛} آخر إذا (الوسيطات.Doadd (10) ؛ // الإخراج "15"
Doadd (40 ، 20) ؛ // الإخراج "60"
عندما يكون هناك معلمة واحدة فقط ، تضيف دالة doadd () 5 إلى المعلمة. إذا كانت هناك معلمتان ، تتم إضافة المعلمتين لإرجاع مجموعهما. لذلك ، مخرجات Doadd (10) "15" ، في حين أن Doadd (40 ، 20) مخرجات "60".
على الرغم من أنه ليس جيدًا مثل التحميل الزائد ، إلا أنه يكفي تجنب هذا الحد من ECMASCRIPT.