/* Soyez propre, ne polluez pas le scope global */
window.votre_scope = {};

votre_scope.Un_Foncteur = function()
{
  /* On se prepare a faire une closure */
  var that = this;
  this.some_data = "";

  this.foncteur = function()
  {
    /*
    ** Ici le this est celui de l'appelant, il ne nous interesse probablement
    ** pas, le that est la closure, il nous permet de remonter vers notre this
    ** a nous, et d'y recuperer notre data.
    */
    alert(that.some_data);
  }

  /*
  ** On ajoute autant de methodes a notre foncteur que l'on desire
  */
  this.foncteur.set_data = function(data)
  {
    /*
    ** Idem pour la closure ici, on va chercher notre this, car le this d'ici
    ** est local a  la fonction
    */
    that.some_data = data;
  }

  return (this.foncteur);
}
/* Enjoy */
var test = new votre_scope.Un_Foncteur();
test.set_data(42);
test();
