في JS ، يجب تنفيذ بعض الذاكرة فقط مرة واحدة ، مثل اكتشاف نوع المتصفح هي الوظيفة الأكثر استخدامًا ، لأنه عندما نستخدم AJAX ، نحتاج إلى اكتشاف XHR المدمج في المتصفح. يمكننا تسجيل النوع أثناء الكشف الأول ، وفي المستقبل ، لم نعد بحاجة إلى اكتشاف نوع المتصفح عند استخدام AJAX. حتى لو كان هناك واحد فقط إذا كان في JS ، فهو دائمًا أكثر كفاءة من العبارات بدون IF.
طريقة AJAX العادية
نسخة الكود كما يلي:
/**
* JS البطيئة وظيفة
*/
وظيفة ajax () {
if (typeof xmlhttprequest! = "undefined") {
إرجاع xmlhttprequest () جديد ؛
} آخر إذا (typeof activexobject! = "undefined") {
if (typeof endress.callee.activexString! = "String") {
var elevions = ["msxml2.xmlhttp.6.0" ، "msxml2.xmlhttp.3.0" ، "msxml2.xmlhttp"] ؛
لـ (var i = 0 ، k = version.length ؛ i <k ؛ i ++) {
يحاول{
New ActivexObject (إصدارات [i]) ؛
encuments.callee.activexString = إصدارات [i] ؛
استراحة؛
} catch (ex) {
رمي السابقين
}
}
}
إرجاع ActiveXObject الجديد (encuments.callee.activexString) ؛
}آخر{
رمي "لا كائن XHR" ؛
}
}
في كل مرة يتم فيها استدعاء وظيفة AJAX () ، فإن فحص XHR المدمج للمتصفح غير فعال.
كيفية استخدام الأساليب الكسول
نسخة الكود كما يلي:
/**
* JS البطيئة وظيفة
*/
وظيفة ajax () {
if (typeof xmlhttprequest! = "undefined") {
ajax = function () {
إرجاع xmlhttprequest () جديد ؛
} ؛
} آخر إذا (typeof activexobject! = "undefined") {
ajax = function () {
if (typeof endress.callee.activexString! = "String") {
var elevions = ["msxml2.xmlhttp.6.0" ، "msxml2.xmlhttp.3.0" ، "msxml2.xmlhttp"] ؛
لـ (var i = 0 ، k = version.length ؛ i <k ؛ i ++) {
يحاول{
var xhr = new ActivexObject (إصدارات [i]) ؛
encuments.callee.activexString = إصدارات [i] ؛
إرجاع XHR ؛
} catch (ex) {
رمي السابقين
}
}
}
إرجاع ActiveXObject الجديد (encuments.callee.activexString) ؛
}
}آخر{
ajax = function () {
رمي "لا كائن XHR" ؛
}
}
إرجاع ajax () ؛
}
في الطريقة الثانية كسول ، كل فرع من فروع إذا سيقوم بتعيين قيمة لمتغير ajax () ، والكتابة بشكل فعال الوظيفة الأصلية ، ويتم استدعاء الوظيفة الجديدة في الخطوة الأخيرة. في المرة التالية التي يسمى Ajax () ، يتم استدعاء المتغير مباشرة.
التركيز التحسين
لتنفيذ رمز معين ، يتم تنفيذ المكالمة الفعلية فقط ، بينما تكتشف بعض مكتبات JS المتصفح في البداية وهي محددة مسبقًا.
نظرًا للحكم المعقد ، تكون سرعة التشغيل الأولى بطيئة ، لكن التشغيل متعدد الكتب اللاحق سيكون أسرع.
في بعض الأحيان ، بعد كتابة التعليمات البرمجية لفترة طويلة ، لا يمكنك البقاء دون تغيير. يجب أن تفكر غالبًا في كيفية جعل البرنامج يعمل بشكل أسرع وأكثر كفاءة. البرنامج المكتوب تحت هذه الأفكار هو غلاف فني ولن ينتج رمز غير ضروري. هذا ليس نهجًا بسيطًا يناسب الجميع. في الواقع ، أجزاء كثيرة من الكود Live ، والناس يعيشون أكثر.