No JS, alguma memória só precisa ser executada uma vez, como a detecção do tipo de navegador é a função mais usada, porque quando usamos o Ajax, precisamos detectar o XHR interno do navegador. Podemos gravar o tipo durante a primeira detecção e, no futuro, não precisamos mais detectar o tipo de navegador ao usar o Ajax. Mesmo se houver apenas um se em JS, é sempre mais eficiente do que declarações sem um IF.
Método Ajax normal
A cópia do código é a seguinte:
/**
* Função preguiçosa js
*/
função ajax () {
if (typeof xmlhttprequest! = "indefinido") {
retornar novo xmlHttPrequest ();
} else if (typeof ActivexObject! = "indefinido") {
if (typeof argumments.callee.activexString! = "string") {
var versions = ["msxml2.xmlhttp.6.0", "msxml2.xmlHttp.3.0", "msxml2.xmlHttp"];
for (var i = 0, k = versão.length; i <k; i ++) {
tentar{
novo ActiveXObject (versões [i]);
argumentos.callee.activeXString = versões [i];
quebrar;
} catch (ex) {
jogar ex;
}
}
}
Retornar novo ActiveXObject (Arguments.Callee.ActiveXString);
}outro{
lançar "No Xhr Object";
}
}
Toda vez que a função AJAX () é chamada, a verificação XHR interna do navegador não é eficiente.
Como usar métodos preguiçosos
A cópia do código é a seguinte:
/**
* Função preguiçosa js
*/
função ajax () {
if (typeof xmlhttprequest! = "indefinido") {
ajax = function () {
retornar novo xmlHttPrequest ();
};
} else if (typeof ActivexObject! = "indefinido") {
ajax = function () {
if (typeof argumments.callee.activexString! = "string") {
var versions = ["msxml2.xmlhttp.6.0", "msxml2.xmlHttp.3.0", "msxml2.xmlHttp"];
for (var i = 0, k = versão.length; i <k; i ++) {
tentar{
var xhr = new ActiveXObject (versões [i]);
argumentos.callee.activeXString = versões [i];
retornar xhr;
} catch (ex) {
jogar ex;
}
}
}
Retornar novo ActiveXObject (Arguments.Callee.ActiveXString);
}
}outro{
ajax = function () {
lançar "No Xhr Object";
}
}
retornar ajax ();
}
No segundo método preguiçoso, cada ramo de se atribuirá um valor à variável Ajax (), substituindo efetivamente a função original, e a nova função é chamada na última etapa. Na próxima vez que o Ajax () for chamado, a variável é chamada diretamente.
Foco de otimização
Para executar um código específico, apenas a chamada real é executada, enquanto algumas bibliotecas JS detectam o navegador no início e são predefinidas.
Devido ao julgamento complexo, a velocidade da primeira execução é lenta, mas a corrida subsequente de vários livros será mais rápida.
Às vezes, depois de escrever código por um longo tempo, você não pode permanecer inalterado. Muitas vezes, você deve pensar em como tornar o programa mais rápido e mais eficiente. O programa escrito sob tais pensamentos é de capa dura e não produzirá código lixo desnecessário. Esta não é uma abordagem simples de tamanho oo-size-tudo. De fato, muitas partes do código vivem, e as pessoas vivem ainda mais.