Dans JS, une certaine mémoire ne doit être exécutée qu'une seule fois, comme la détection du type de navigateur est la fonction la plus couramment utilisée, car lorsque nous utilisons AJAX, nous devons détecter le XHR intégré du navigateur. Nous pouvons enregistrer le type lors de la première détection, et à l'avenir, nous n'avons plus besoin de détecter le type de navigateur lors de l'utilisation de l'Ajax. Même s'il n'y en a qu'un si dans JS, il est toujours plus efficace que les instructions sans if.
Méthode AJAX normale
La copie de code est la suivante:
/ **
* Fonction JS paresseuse
* /
fonction ajax () {
if (typeof xmlHttpRequest! = "Undefined") {
retourner nouveau xmlHttpRequest ();
} else if (typeof activeXObject! = "Undefined") {
if (typeof arguments.callee.activexString! = "String") {
var versions = ["msxml2.xmlhttp.6.0", "msxml2.xmlhttp.3.0", "msxml2.xmlhttp"];
pour (var i = 0, k = version.length; i <k; i ++) {
essayer{
new activeXObject (versions [i]);
arguments.callee.activexString = versions [i];
casser;
} catch (ex) {
jeter ex;
}
}
}
return new ActiveXObject (arguments.callee.activexString);
}autre{
Jetez "pas d'objet XHR";
}
}
Chaque fois que la fonction ajax () est appelée, la vérification XHR intégrée du navigateur n'est pas efficace.
Comment utiliser des méthodes paresseuses
La copie de code est la suivante:
/ **
* Fonction JS paresseuse
* /
fonction ajax () {
if (typeof xmlHttpRequest! = "Undefined") {
ajax = function () {
retourner nouveau xmlHttpRequest ();
};
} else if (typeof activeXObject! = "Undefined") {
ajax = function () {
if (typeof arguments.callee.activexString! = "String") {
var versions = ["msxml2.xmlhttp.6.0", "msxml2.xmlhttp.3.0", "msxml2.xmlhttp"];
pour (var i = 0, k = version.length; i <k; i ++) {
essayer{
var xhr = new ActiveXObject (versions [i]);
arguments.callee.activexString = versions [i];
retour xhr;
} catch (ex) {
jeter ex;
}
}
}
return new ActiveXObject (arguments.callee.activexString);
}
}autre{
ajax = function () {
Jetez "pas d'objet XHR";
}
}
retourner ajax ();
}
Dans la deuxième méthode paresseuse, chaque branche d'IF attribuera une valeur à la variable ajax (), écrasant efficacement la fonction d'origine, et la nouvelle fonction est appelée dans la dernière étape. La prochaine fois qu'Ajax () est appelé, la variable est appelée directement.
Focus d'optimisation
Pour exécuter un code spécifique, seul l'appel réel est exécuté, tandis que certaines bibliothèques JS détectent le navigateur au début et sont prédéfinies.
En raison du jugement complexe, la première vitesse d'exécution est lente, mais la course multi-livres suivante sera plus rapide.
Parfois, après avoir écrit du code pendant longtemps, vous ne pouvez pas rester inchangé. Vous devez souvent réfléchir à la façon de faire fonctionner le programme plus rapidement et plus efficace. Le programme écrit dans de telles pensées est la couverture rigide et ne produira pas de code indésirable inutile. Ce n'est pas une approche simple de la taille d'une taille OO. En fait, de nombreuses parties du code vivent et les gens vivent encore plus.