В JS некоторая память должна быть выполнена только один раз, например, обнаружение типа браузера является наиболее часто используемой функцией, потому что, когда мы используем Ajax, нам нужно обнаружить встроенный XHR браузера. Мы можем записать тип во время первого обнаружения, и в будущем нам больше не нужно определять тип браузера при использовании AJAX. Даже если в JS есть только один, он всегда более эффективен, чем операторы без if.
Нормальный метод Ajax
Кода -копия выглядит следующим образом:
/**
* Js ленивая функция
*/
функция ajax () {
if (typeof xmlhttprequest! = "undefined") {
вернуть новый xmlhttprequest ();
} else if (typeof activexObject! = "undefined") {
if (typeof argiments.callee.actiactxstring! = "String") {
var versions = ["msxml2.xmlhttp.6.0", "msxml2.xmlhttp.3.0", "msxml2.xmlhttp"];
для (var i = 0, k = version.length; i <k; i ++) {
пытаться{
new ActivexObject (версии [i]);
Arguments.callee.activexstring = версии [i];
перерыв;
} catch (ex) {
бросить бывш;
}
}
}
вернуть новый ActiveXObject (arguments.callee.activexstring);
}еще{
бросить "нет xhr объект";
}
}
Каждый раз, когда вызывается функция Ajax (), встроенная проверка XHR браузера не эффективна.
Как использовать ленивые методы
Кода -копия выглядит следующим образом:
/**
* Js ленивая функция
*/
функция ajax () {
if (typeof xmlhttprequest! = "undefined") {
ajax = function () {
вернуть новый xmlhttprequest ();
};
} else if (typeof activexObject! = "undefined") {
ajax = function () {
if (typeof argiments.callee.actiactxstring! = "String") {
var versions = ["msxml2.xmlhttp.6.0", "msxml2.xmlhttp.3.0", "msxml2.xmlhttp"];
для (var i = 0, k = version.length; i <k; i ++) {
пытаться{
var xhr = new ActivexObject (версии [i]);
Arguments.callee.activexstring = версии [i];
вернуть XHR;
} catch (ex) {
бросить бывш;
}
}
}
вернуть новый ActiveXObject (arguments.callee.activexstring);
}
}еще{
ajax = function () {
бросить "нет xhr объект";
}
}
вернуть ajax ();
}
Во втором ленивом методе каждая ветвь IF назначит значение переменной ajax (), эффективно перезаписывая исходную функцию, а новая функция вызывается на последнем этапе. В следующий раз, когда ajax () будет вызван, переменная называется напрямую.
Оптимизация фокуса
Чтобы выполнить конкретный код, выполняется только фактический вызов, в то время как некоторые библиотеки JS обнаруживают браузер в начале и предварительно установлены.
Из-за сложного суждения первая скорость пробега медленная, но последующий прогон из нескольких книг будет быстрее.
Иногда, после долгого написания кода, вы не можете оставаться неизменным. Вы должны часто думать о том, как заставить программу работать быстрее и эффективнее. Программа, написанная под такими мыслями, является твердым переплетом и не будет производить ненужный нежелательный код. Это не простой подход OO-размер. На самом деле, многие части кода живут, и люди живут еще больше.