En JS, alguna memoria solo debe ejecutarse una vez, como la detección de tipo de navegador es la función más utilizada, porque cuando usamos AJAX, necesitamos detectar el XHR incorporado del navegador. Podemos registrar el tipo durante la primera detección, y en el futuro, ya no necesitamos detectar el tipo de navegador al usar AJAX. Incluso si solo hay uno en JS, siempre es más eficiente que las declaraciones sin un IF.
Método AJAX normal
La copia del código es la siguiente:
/**
* JS Función perezosa
*/
función ajax () {
if (typeof xmlhttprequest! = "indefinido") {
devolver nuevo xmlhttprequest ();
} else if (typeOf ActiveXObject! = "Undefined") {
if (typeof arguments.callee.activexstring! = "string") {
Versiones var = ["msxml2.xmlhttp.6.0", "msxml2.xmlhttp.3.0", "msxml2.xmlhttp"];
para (var i = 0, k = versión.length; i <k; i ++) {
intentar{
nuevo ActiveXObject (versiones [i]);
argumentos.callee.activexstring = versiones [i];
romper;
} catch (ex) {
tirar ex;
}
}
}
devolver nuevo ActiveXObject (arguments.callee.activexString);
}demás{
tirar "no objeto xhr";
}
}
Cada vez que se llama a la función Ajax (), la verificación XHR incorporada del navegador no es eficiente.
Cómo usar métodos perezosos
La copia del código es la siguiente:
/**
* JS Función perezosa
*/
función ajax () {
if (typeof xmlhttprequest! = "indefinido") {
ajax = function () {
devolver nuevo xmlhttprequest ();
};
} else if (typeOf ActiveXObject! = "Undefined") {
ajax = function () {
if (typeof arguments.callee.activexstring! = "string") {
Versiones var = ["msxml2.xmlhttp.6.0", "msxml2.xmlhttp.3.0", "msxml2.xmlhttp"];
para (var i = 0, k = versión.length; i <k; i ++) {
intentar{
var xhr = new ActiveXObject (versiones [i]);
argumentos.callee.activexstring = versiones [i];
regresar xhr;
} catch (ex) {
tirar ex;
}
}
}
devolver nuevo ActiveXObject (arguments.callee.activexString);
}
}demás{
ajax = function () {
tirar "no objeto xhr";
}
}
return aJax ();
}
En el segundo método perezoso, cada rama de If asignará un valor a la variable Ajax (), sobrescribiendo efectivamente la función original, y la nueva función se llama en el último paso. La próxima vez que se llama Ajax (), la variable se llama directamente.
Enfoque de optimización
Para ejecutar un código específico, solo se ejecuta la llamada real, mientras que algunas bibliotecas JS detectan el navegador al principio y están preestablecidos.
Debido al juicio complejo, la primera velocidad de ejecución es lenta, pero la ejecución múltiple posterior será más rápida.
A veces, después de escribir código durante mucho tiempo, no puede permanecer sin cambios. A menudo debe pensar en cómo hacer que el programa se ejecute más rápido y más eficiente. El programa escrito bajo tales pensamientos es tapa dura y no producirá un código de basura innecesario. Este no es un enfoque simple de tamaño OO para todos. De hecho, muchas partes del código viven, y las personas viven aún más.