لقد قمت بفرز جزء Ajax في المرة الأخيرة ، وبعد قراءة جزء المهارات المتقدمة هذا الأسبوع ، سأقوم بفرزه أيضًا.
1. اكتب الكشف
استخدم Object.Prototype.ToString.Call (OBJ).
لأنه لا يوجد نوع أو مثيل ESOF يمكن أن يحكم بدقة على أنواع المتغيرات.
2. مُنشئ آمن
عادة عندما نحدد المُنشئين ، سنستخدم شيئًا مثل
نسخة الكود كما يلي:
وظيفة الشخص (الاسم) {
this.name = name ؛
}
ومع ذلك ، إذا لم تذهب إلى var person = شخص جديد ("cnblogs").
بدلاً من ذلك ، var person = person ("cnblogs"). ثم سيشير هذا إلى مكان آخر ، مما يسبب تلوثًا لبقية الكائنات.
الحل هو إصدار حكم عند تحديد هذا.
هذه الحالة للشخص
إذا لم يكن كذلك ، شخص جديد (x ، x ، x) ؛
نسخة الكود كما يلي:
وظيفة الشخص (الاسم) {
إذا (هذا مثيل الشخص) {
this.name = name ؛
}آخر{
إرجاع شخص جديد (اسم) ؛
}
}
ولكن هناك شيء واحد يجب ملاحظته هو أنه إذا حاول المنشئون الآخرون تنفيذ الميراث من خلال الشخص.
تجدر الإشارة إلى أنه قبل الاستئصال ، قم بإشارة النموذج الأولي لتلك الوظيفة إلى الشخص.
3. وظيفة التحميل كسول
عند استدعاء وظيفة ، غالبًا ما يكون هناك موقف تحتاج فيه الوظيفة إلى الحكم على وظيفة المتصفح.
على سبيل المثال
نسخة الكود كما يلي:
وظيفة إنشاء شيء () {
إذا (support5) {
// افعل شيئًا
}آخر{
// القيام بأي شيء آخر
}
}
ومع ذلك ، إذا كان المتصفح يدعم وظيفة ما ، فيجب أن يتم دعمه دائمًا ، لذلك ليس من الضروري إصدار أحكام في كل مرة تقوم فيها بتنفيذ الكود ، لأنه مرة واحدة كافية.
لذلك يمكن إعادة كتابته
نسخة الكود كما يلي:
وظيفة إنشاء شيء () {
إذا (support5) {
إنشاء شيء = function () {// أعد كتابة وظيفة introdays شيء
// افعل شيئًا
}
}آخر{
// كما هو مذكور أعلاه
}
}
وبهذه الطريقة ، ستصدر حكمًا عندما تسميه في المرة الأولى ، وبعد ذلك لن تصدر حكمًا إذا قمت بإعادة كتابة الوظيفة.
4. وظيفة الربط
في JS ، يجب أن يكون الشيء الأكثر إرباكًا هو مسألة من يشير إلى هذا.
في الواقع ، بعد أن كنت أدرس JS لفترة طويلة ، وجدت استنتاجًا
سيشير هذا في الوظيفة إلى الكائن الذي يتصل أخيرًا بالوظيفة.
بمجرد معرفة ذلك ، فإن ربط الوظائف ليس مشكلة.
طرق تغيير هذا الإشارة في الوظيفة هي الاتصال والتطبيق ، ولكن سيتم تنفيذ الوظائف باستخدام هاتين الطريقتين.
إذا كنت لا ترغب في تنفيذ وظيفة ، ولكن تمرير الوظيفة كمعلمة إلى دالة وتريد تغيير هذا ، ثم استخدم أحدث الربط.
5. مؤقت
على الرغم من أن settimeou أو setInterval أو Ajax غير متزامن ، مثل Multi-Threading ، فإن JS متاح واحد.
في الواقع ، هذه الطرق لا تضيف موضوع.
SetTimeout (FN ، 300) يعني وضع FN في قائمة انتظار تنفيذ JS بعد 300 ميلي ثانية.
إذا لم تكن هناك معاملة في قائمة الانتظار ليتم تنفيذها (أي ، يكون مترجم JS خاملاً) ، فسيتم تنفيذه على الفور. خلاف ذلك ، سيتم تنفيذ الوظيفة بعد معالجة معاملة قائمة الانتظار.
لذلك ، فإن استخدام setTimeOut أو SetInterval ليس وقت تحكم دقيق.
شيء آخر يجب ملاحظته هو أن استخدام SetTimeOut لمحاكاة SetInterval يمكنه التحكم بدقة في الفاصل الزمني لوقت التنفيذ بدقة.
6. استخدم مؤقتًا لتنفيذ الطريقة في الوقت الثابت.
إذا كانت هناك حاجة إلى تنفيذ طريقة لفترة طويلة ، مما قد يتسبب في عدم استجابة المتصفح لفترة قصيرة ، فيمكنك استخدام مؤقت لتنفيذ جزء منه كل فترة من الوقت. سيمنع هذا JS من الانشغال طوال الوقت (المتصفح غير مستجيب) ولديه وقت فراغ للتعامل مع بقية المعاملات. على سبيل المثال ، إذا كانت هناك حلقة صفيف ذات طول من 1000 ، فيمكنك تنفيذ 100 في كل مرة ، والفاصل الزمني بين JS هو خمول للقيام بعمليات أخرى.
7. وظيفة خنق.
يعد خانق الوظيفة طريقة رائعة لتحسين الأداء ، والتي يمكن أن تحسن الكفاءة عدة مرات في بعض الحالات.
على سبيل المثال ، عند القيام بالسحب أو بعض العمليات التي تحدث في حدث onResize.
في كل مرة تقوم فيها بتشغيلها ، تقوم بالفعل بتنفيذها عدة مرات. على سبيل المثال:
نسخة الكود كما يلي:
var i = 0 ؛
window.onresize = function () {
console.log (i ++) ؛
}
إذا حاولت تمديد المتصفح ، فستجد أن وحدة التحكم توضح على الفور أن I أكثر من 100.
تغيير طريقة الكتابة ، على سبيل المثال:
نسخة الكود كما يلي:
var i = 0 ، j = 1 ؛
window.onresize = function () {
if (j ٪ 2 == 0) {
console.log (i ++) ؛
}
J ++ ؛
}
قم بإنشاء متغير J واترك J ينفذ كل مرة فقط عندما يكون هناك رقم زوجي ، مما يعني نصف عدد عمليات الإعدام.
من خلال المعالجة مثل هذا ، يمكن تخفيض عدد عمليات الإعدام بنسبة 50 ٪ ، ولكن بالنسبة للمستخدمين ، لا يمكن الشعور بالفرق.
هناك أيضا وظيفة خنق تم تنفيذها باستخدام مؤقت.
الرمز الأساسي هو كما يلي:
نسخة الكود كما يلي:
وظيفة الخنق (الطريقة ، السياق) {
ClearTimeOut (method.tid) ؛
method.tid = setTimeOut (function () {
method.call (السياق) ؛
} ، 100) ؛
}
هنا ، بيئة التنفيذ لوظيفة التنفيذ ووظيفة (أي كائن التأشير لهذا في وظيفة التنفيذ) ، ثم قم بمسح قائمة انتظار الإجراء أولاً ، ثم تنفيذ الإجراء.
هذا النموذج يمكن أن يتحكم بشكل أفضل في تواتر الإجراء.
على افتراض أنه إجراء تمديد المتصفح ، طالما تمتد بسرعة كافية والفاصل الزمني لكل مشغل هو ضمن 100 مللي ثانية ، ثم سيتم تنفيذ النتيجة الأخيرة فقط.
8. الأحداث المخصصة
الجوهر هو نمط المراقب. يتطلب النمط الأساسي 3 وظائف.
إحدى الوظائف هي حدث ملزم ، ووظائف واحدة هي حدث مشغل ، والآخر هو إزالة الربط.
هذا النمط يمكن أن يقلل بشكل كبير من اقتران الكود.