Utilisateur:Od1n/Snippets JavaScript - 2
Apparence
// diverses méthodes de mise en cache automatique
// pour l'exemple, factorisation du code de récupération du #bodyContent
(function () {
// méthode "lazy function definition"
var getElementContenuPage_1 = function () {
var bc = document.getElementById('bodyContent');
if (!bc) { bc = document.getElementById('mw_contentholder'); }
if (!bc) { bc = document.getElementById('article'); }
if (bc) {
getElementContenuPage_1 = function () {
return bc;
};
}
return bc;
};
// méthode "object property"
function getElementContenuPage_2() {
var self = getElementContenuPage_2;
if (!self.bc) {
self.bc = document.getElementById('bodyContent');
if (!self.bc) { self.bc = document.getElementById('mw_contentholder'); }
if (!self.bc) { self.bc = document.getElementById('article'); }
}
return self.bc;
}
// méthode "closure"
var getElementContenuPage_3 = (function () {
var bc;
return function () {
if (!bc) {
bc = document.getElementById('bodyContent');
if (!bc) { bc = document.getElementById('mw_contentholder'); }
if (!bc) { bc = document.getElementById('article'); }
}
return bc;
};
})();
// pas de cache
function getElementContenuPage_4() {
var bc = document.getElementById('bodyContent');
if (!bc) { bc = document.getElementById('mw_contentholder'); }
if (!bc) { bc = document.getElementById('article'); }
return bc;
}
var i, nb = 100000;
var T1 = new Date();
for (i = nb; i--; ) {
getElementContenuPage_1();
}
var T2 = new Date();
for (i = nb; i--; ) {
getElementContenuPage_2();
}
var T3 = new Date();
for (i = nb; i--; ) {
getElementContenuPage_3();
}
var T4 = new Date();
for (i = nb; i--; ) {
getElementContenuPage_4();
}
var T5 = new Date();
console.log(T2 - T1);
console.log(T3 - T2);
console.log(T4 - T3);
console.log(T5 - T4);
})();