تحتوي كل وظيفة على خصائصين: الطول والنموذج الأولي
الطول: عدد المعلمات المسماة التي تريد الدالة الحالية قبولها
النموذج الأولي: هي الطريقة الحقيقية للحفاظ على كل قوتهم
نسخة الكود كما يلي:
وظيفة seallenname (الاسم) {
تنبيه (اسم) ؛
}
وظيفة SUM (num1 ، num2) {
إرجاع num1 + num2 ؛
}
وظيفة sealhi () {
تنبيه ("مرحبا") ؛
}
التنبيه (sayname.length) ؛ // 1 عدد المعلمات
التنبيه (sum.Length) ؛ // 2 عدد المعلمات: 2
تنبيه (sayhi.length) ؛ // 0 لا توجد معلمات
تحتوي كل وظيفة على طريقتين غير مؤكدين: تطبيق () و Call ()
كلا الطريقتين استدعاء وظائف في نطاق معين ، والذي يساوي في الواقع تعيين قيمة هذا الكائن في جسم الوظيفة
تطبيق أولاً () يقبل معلمتين: أحدهما هو نطاق تشغيل الوظيفة ، والآخر هو صفيف المعلمات (يمكن أن يكون مثيل صفيف أو كائن وسيطة)
نسخة الكود كما يلي:
وظيفة SUM (num1 ، num2) {
إرجاع num1 + num2 ؛
}
الدالة callsum1 (num1 ، num2) {
إرجاع sum.apply (هذا ، الحجج) ؛ // تمرير في كائن الوسيطات
}
الدالة callsum2 (num1 ، num2) {
return sum.Apply (هذا ، [num1 ، num2]) ؛
}
تنبيه (callsum1 (10 ، 10)) ؛ // 20
تنبيه (callsum2 (10 ، 20)) ؛ // 30
ثانياً ، لم تتغير المعلمة الأولى من طريقة الاتصال. ما هو التغييرات التي تتمثل في أن المعلمات الأخرى يتم تمريرها ، وأن المعلمات التي تم تمريرها إلى الوظيفة تحتاج إلى إدراجها واحدًا تلو الآخر.
نسخة الكود كما يلي:
وظيفة SUM (num1 ، num2) {
إرجاع num1 + num2 ؛
}
الدالة callsum (num1 ، num2) {
return sum.Call (هذا ، num1 ، num2) ؛
}
ALERT (Callsum (10 ، 200)) ؛
بالنسبة إلى الطريقة التي تكون أكثر ملاءمة ، فإنها تعتمد بالكامل على رغباتك. إذا لم تكن هناك معلمات ، فسيكون هو نفسه استخدام أي منهما.
ومع ذلك ، فإن ظهور أساليب التطبيق والاتصال هو بالتأكيد ليس فقط لكيفية إزالة معلمات الهيكل.
يكمن استخدامهم الحقيقي في النطاق الذي تعتمد عليه وظائف التمديد.
نسخة الكود كما يلي:
Window.Color = "Red" ؛
var o = {color: "Blue"} ؛
وظيفة sexercolor () {
تنبيه (this.color) ؛
}
saycolor () ؛ // الأحمر
saycolor.call (هذا) ؛ // الأحمر
saycolor.call (نافذة) ؛ // الأحمر
saycolor.call (o) ؛ // الأزرق
إن أكبر ميزة لاستخدام التطبيق والاتصال لتوسيع نطاق هو أنه لا توجد حاجة إلى وجود أي علاقة اقتران مع الطريقة.
يحدد ECMASCript5 أيضًا طريقة: BIND (). تنشئ هذه الطريقة مثيلًا لوظيفة ستُحدد قيمتها بالقيمة التي تم تمريرها إلى وظيفة الربط
نسخة الكود كما يلي:
Window.Color = "Red" ؛
var o = {color: "Blue"} ؛
وظيفة sexercolor () {
تنبيه (this.color) ؛
}
var bindfun = saycolor.bind (o) ؛
bindfun () ؛ // الأزرق
ما سبق هو كل شيء عن هذا المقال ، آمل أن تتمكن من إعجابك به.