jan
28
2010
Conflits de noms en javascript 2
Voici une alternative à l’Object, les fonctions anonymes.
La fonction anonyme permet de déclarer n’importe quoi et rien ne sera global sauf ce qu’on choisi, en plus de permettre de racourcir certain noms de variable.
// déclaration de la fonction anonyme
(function(w, l, j, undefined) {
// w, l, j, undefined
// sont les paramètres passés à la fonction anonyme (on passe ce qu'on veut)
// cette fonction reste active qu'à l'intérieur de la fonction anonyme
function fonction_privee(p1) {
return p1+' yeah';
}
// ces variables restent actives qu'à l'intérieur de la fonction anonyme
var privee = 'bonjour';
var privee2 = fonction_privee('hell');
var domaine = l.host; // équivalent de window.location.host
var id = j('body').attr('id'); // utilisation de jQuery
// publier globalement certains morceaux
w.domaineg = domaine;
w.idbody = id;
w.ajoutYeah = fonction_privee;
// à l'intérieur de la fonction anonyme tout est accessible
alert( fonction_privee('oh') ); // 'oh yeah'
alert( privee ); // 'bonjour'
alert( privee2 ); // 'hell yeah'
alert( domaine ); // 'jblandry.info'
alert( id ); // 'blog'
alert( domaineg ); // 'jblandry.info'
alert( idbody ); // 'blog'
alert( ajoutYeah('hell') ); // 'hell yeah'
})(window, window.location, jQuery);
// en dehors de la fonction anonyme seulement ce qui a été publié est accessible
alert( fonction_privee('oh') ); // undefined
alert( privee ); // undefined
alert( privee2 ); // undefined
alert( domaine ); // undefined
alert( id ); // undefined
alert( domaineg ); // 'jblandry.info'
alert( idbody ); // 'blog'
alert( ajoutYeah('oh') ); // 'oh yeah'
Enjoy