Code :
Ce n'est pas une raison, car si le code est passé, par exemple, par variable get, je peux faire un lien vers le site d'Argorate, avec dedans mon propre code Javascript.
Prendre le cas ultime d'une erreur de programmeur pour en faire un argument c'est hors sujet.
function UsineAGaz()
{
this.produire = function(p_nom)
{
console.log('On me demande le gaz:',p_nom);
var usineTemporaire = new UsineAGaz();
var ceGazCi = usineTemporaire['Gaz'+p_nom];
if (typeof ceGazCi == 'function')
return new ceGazCi();
console.warn('Le gaz "',p_nom,'" n\'existe pas.');
return new this.GazDefaut();
}
this.GazXenon = function ()
{
this.saluer = function()
{
console.log('Je suis rare, donc précieux');
};
}
this.GazSchiste = function ()
{
this.saluer = function()
{
console.log('Je pue et je pollue !');
};
}
this.GazEau = function ()
{
this.saluer = function()
{
console.log('Y\'a de l\'eau dans le gaz.');
};
}
this.GazDefaut = this.GazEau;
}
var Usine = new UsineAGaz();
Usine.produire('Eau').saluer();
Usine.produire('pard').saluer();
Usine.produire('Schiste').saluer();
Usine.produire('Xenon').saluer();
Pourquoi tu mélanges le UpperCamelCase, le snake_case et le camelCase dans tes codes ? En Javascript le camelCase c'est la norme.
On utilise les prototypes plutôt que les closures.
Code :
return new this.GazDefaut();
assez horrible comme notation et mal pensé, tu instancies des objets à partir de méthodes de ta classe
Ta méthode produire est intestable, tu ré-instancie l'objet que tu utilises déjà ?!