يتم دعم طريقتين في صفيف JS و Shift () و pop () ، والتي تشير إلى حذف قيمة من الجبهة والآخر من البيانات ، وإعادة القيمة المحذوفة. سوف تفهم من خلال النظر في مثال:
نسخة الكود كما يلي:
var arr = ['s' ، 'o' ، 'f' ، 'i' ، 's' ، 's' ، 'h'] ؛
arr.shift () ؛ // العودة '
arr ؛ // حاليًا ['o' ، 'f' ، 'i' ، 's' ، 'h']
arr.pop () // return 'h'
arr // حاليًا ['o' ، 'f' ، 'i' ، 's']
من الشائع جدًا في العديد من أطر عمل JS أن الطريقة توفر لك تمرير العديد من المعلمات ، ويمكن تجاهل بعض هذه المعلمات. قد تكون هذه النقاط اللازمة هي الأولى أو الأخيرة. تتمثل الطريقة التقليدية في الكتابة في تحديد ما إذا كانت المعلمات موجودة ، أو عدد المعلمات لتحديد القيمة النهائية.
هنا ، يمكننا استخدام كائن الوسيطات في الوظيفة ، وكذلك التحول والبوب في الصفيف لتحقيق تطبيقات مرنة.
1. استخدم التحول
كيفية تنفيذ طريقة .bind () ، دع واجهة برمجة تطبيقات FN تكون كما يلي:
نسخة الكود كما يلي:
// يقتصر نطاق FN على الكائن
// باستثناء الكائن ، سيتم تمرير جميع معلمات طرق الربط إلى FN
fn.bind (object ، param1 ، param2 ، [، paramn]) ؛
انظر إلى مثال أولا. بالطبع ، قد يكون هذا المثال أكثر أهمية لتطبيق المكالمة والتطبيق. ومع ذلك ، فإن ما نريد التحدث عنه هو تطبيق التحول:
نسخة الكود كما يلي:
// [.
function.prototype.bind = function () {
var fn = هذا ،
args = array.prototype.slice.call (الحجج) ،
كائن = args.shift () ؛
وظيفة الإرجاع () {
إرجاع fn.apply (كائن ،
args.concat (Array.Protype.slice.call (الحجج)))) ؛
} ؛
} ؛
يمكننا استخدام التحول إلى كائن الوسائط (كائن يشبه المصفوفة ، والذي يحتاج إلى تحويله إلى صفيف حقيقي) لأخذها. على سبيل المثال ، تستخدمها هذه الطريقة بشكل أساسي لفصل الكائن كنطاق ، ثم تمرير صفيف المعلمة المتبقية بذكاء إلى FN ، أي استدعاء الوظيفة التي نريد الحد من نطاق الكائن.
2. استخدم البوب
في الآونة الأخيرة ، نحاول Seajs ، دعنا نأخذ أحد واجهات برمجة التطبيقات الخاصة به كمثال:
نسخة الكود كما يلي:
تعريف (المعرف ، التبعيات ، رد الاتصال)
هذا يحدد واجهة برمجة التطبيقات للوحدة ، والمعرف والتبعيات يمكن حذفها. هنا ، كيفية تنفيذ هذا الدعم؟ إذا كنت تستخدم إذا كنت للحكم ، فأنت بحاجة حقًا إلى (الوسائط === 1) {...} elseif ... الكثير منها. بالطبع ، هذا في بعض الأحيان فوائد (؟ ، فكر في الأمر). هنا ، قد نستخدم POP لتسهيل تنفيذ هذا الدعم:
نسخة الكود كما يلي:
var define = function () {
// أخرج رد الاتصال هذا
var args = [] .slice.call (الوسائط)
fn = args.pop () ؛
// افعل بعض الأشياء السحرية الأخرى
fn.apply (null ، args)
// ...
} ،
Callback = function () {
var args = الوسيطات ، i = 0 ، len = args.length ؛
if (len === 0) console.log ('رد اتصال واحد فقط') ؛
لـ (؛ i <len ؛ i ++) {
console.log (args [i]) ؛
}
}
// تحقق من نتائج تنفيذ الثلاثة
تعريف (رد الاتصال) ؛
تعريف ("هناك معلمتان" ، رد الاتصال) ؛
تعريف ("هناك ثلاثة معلمات" ، "Hello World" ، رد الاتصال) ؛
قبل يومين ، اعتدت أن أقتبس شيئًا عندما استخدمت بعض الحيل في JS. على الرغم من أنني أطلب من نفسي دائمًا عدم الانغماس في الكود ، فإن الكود ، وليس فقط JS ، يعطينا دائمًا الكثير من المرح. كيف تكره ذلك. ها ها ها.