Laurent vilday <mokhet@mokhet.com> wrote:
Mais pourquoi pas simplement ceci :
function Ant(...)
{
...
function init(that)
{
that.ctx.moveTo(that.x, that.y);
that.pendDown();
return that;
}
return init(this);
}
ah ouais! fastoche !!!
donc seules les functions sont "externalisées" par prototypes...
je veux dire par là que les attributs sont gardés dans le corps du
constructeur standard donc, et que les méthodes sont définies de manière
externe au constructeur en utilisant prototype.
Pourquoi je comprends rien à ce que tu racontes ? :(
je pense que le "that" dans init() ne fabrique pas de cycle (?)
Ben si, et encore, sous condition que je comprenne ce que tu entends par
"cycle".
Reprenons ton exemple d'origine :
function UnObjet(attribut_1,attribut_n)
{
this.attribut_1=attribut_1;
this.attribut_n=attribut_n;
var that=this;
function init()
{
that.doSomething();
}
init();
}
Dans le contexte "UnObjet",
"init" est une Variable (si si)
"that" est une Closure
Puis dans init()
"that" est une Outer variable
Donc si, le "cycle" dont tu parlais existe bel et bien.
j'ai bon, ou je n'ai rien compris au film ???
ta solution est bien meilleure que la mienne c'est sûr, je ne crois pas
que le pb soit du à une closure mais à un cycle càd à un élément défini,
indirectement à lui-même ce qui crée une boucle infinie (par référence
circulaire). mais peut-être que le mot "closure" est utilisé dans deux
sens différents???
--
Une Bévue