هذا شيء مثير للاهتمام ، والذي قد يوضح أيضًا قوة كائنات JavaScript. ما يتعين علينا فعله هو إخراج Hello ، عالم كما هو مذكور في المقالة السابقة ، والمدخلات طباعة ('Hello') ('World') ، وهذا هو ما يسمى وظيفة الترتيب العالي.
وظائف متقدمة
يبدو الأمر المتقدم مثل مصطلح باطني لتقنيات البرمجة المتقدمة ، واعتقدت ذلك عندما رأيته لأول مرة.
وظائف الترتيب العالي لجافا سكريبت
ومع ذلك ، فإن وظائف الترتيب العالي هي مجرد وظائف تتخذ وظائف كوسائط أو قيم الإرجاع. مرحبًا والعالم أعلاه كمثال بسيط.
نسخة الكود كما يلي:
var moqi = function (p1) {
this.add = function (p2) {
إرجاع p1 + '' + p2 ؛
} ؛
الإرجاع إضافة ؛
} ؛
يمكننا استخدام هذه الوظيفة مثل هذه
نسخة الكود كما يلي:
console.log (moqi ('hello') ('World')) ؛
ربما تكون هذه العملية مربكة بعض الشيء ، دعنا نرى ما إذا كانت أكثر تفصيلًا.
نسخة الكود كما يلي:
> typeof moqi ('hello')
<- "الوظيفة"
> Moqi ('hello')
<- وظيفة (p2) {
إرجاع p1 + '' + p2 ؛
}
وهذا يعني ، في الواقع ، Moqi ('Hello') هو وظيفة ، moqi ('hello')
نسخة الكود كما يلي:
> var m = moqi ('hello')
> م ("العالم")
> "مرحبا ، العالم"
انطلاقًا من الموقف أعلاه ، يمكن للوظائف ذات الترتيب الأعلى أن تجعل الكود أكثر إيجازًا وفعالية. بطبيعة الحال ، يمكننا أيضًا إنشاء وظيفة لتسهيل:
نسخة الكود كما يلي:
> Moqi ('Hello') ('World') ('phodal')
> "مرحبا ، العالم الفودال"
لذلك هناك مثل هذه الوظيفة
نسخة الكود كما يلي:
var moqi = function (p1) {
وظيفة الإرجاع (p2) {
وظيفة الإرجاع (p3) {
إرجاع p1 + '،' + p2 + '' + p3 ؛
}
} ؛
} ؛
استعادة وظائف الترتيب العالي
الإشارات التي تحتاج إلى إدخال تجريد وظائف عالية الترتيب هي رموز مكررة أو مشابهة. ثم ، نعيد إلى الوظيفة السابقة خطوة بخطوة:
نسخة الكود كما يلي:
var moqi = function (p1) {
this.add = function (p2) {
وظيفة الإرجاع (p3) {
إرجاع p1 + '،' + p2 + '' + p3 ؛
}
} ؛
إرجاع هذا.
} ؛
ثم قم بإنشاء وظيفة جديدة
نسخة الكود كما يلي:
var moqi = function (p1) {
this.add = function (p2) {
this.add1 = function (p3) {
إرجاع p1 + '،' + p2 + '' + p3 ؛
} ؛
إرجاع this.add1 ؛
} ؛
إرجاع هذا.
} ؛
باستخدام طريقة الاتصال في JavaScript ، سيكون هناك:
نسخة الكود كما يلي:
var moqi = function (p1) {
var self = this ؛
وظيفة fd (p2) {
this.add1 = function (p3) {
إرجاع p1 + '،' + p2 + '' + p3 ؛
} ؛
}
self.add = function (p2) {
fd.call (هذا ، p2) ؛
إرجاع this.add1 ؛
} ؛
العودة self.add ؛
} ؛
أمثلة وظيفة متقدمة
المثال أعلاه مخصص للمتعة فقط ، والمثال التالي هو تطبيق حقيقي.
نسخة الكود كما يلي:
إضافة = دالة (أ ، ب) {
إرجاع A + B ؛
} ؛
وظيفة الرياضيات (func ، صفيف) {
إرجاع func (صفيف [0] ، صفيف [1]) ؛
}
console.log (Math (Add ، [1،2])) ؛
> الرياضيات (إضافة ، [1،2])
<3
الإضافة التي تم تمريرها في المثال أعلاه هي معلمة ، والعودة مجرد وظيفة. على سبيل المثال ، هناك وظيفة في jQuery
نسخة الكود كما يلي:
// تحويل متقطع إلى Camelcase ؛ تستخدمها CSS ووحدات البيانات
// نسيت Microsoft حوض بادئة البائع (#9572)
Camelcase: Function (String) {
return string.replace (rmsprefix ، "ms-") .replace (rdashalpha ، fcamelcase) ؛
} ،
هذا هو الحال أيضًا مع استخدام وظائف الترتيب الأعلى من أجل إتقان JS. .