Je rencontre des problèmes pour trouver des informations détaillées sur ce problème. Je voudrais instancier Bar() dans Foo() sans avoir à passer un pointeur vers Foo(). Ou un moyen pour Bar() de savoir que c'est un enfant de Foo(). Est-ce possible? Ou suis-je déjà en train d'utiliser une méthode suffisante?Essayer d'obtenir un objet pour identifier son objet parent sans passer le parent dans l'instance de l'enfant
Fondamentalement, je suis en train d'éviter un appel comme:
var bar1 = new Bar(this,someValue);
Ci-dessous j'ai un exemple grossier de la méthode que je utilise actuellement.
function Bar(p,val) {
var par = p,
value = val;
this.__defineGetter__("value", function() {
return par.dun.value + value;
});
}
function Dun(val) {
var value = val;
this.__defineGetter__("value", function() {
return value;
});
}
function Foo() {
var dun = new Dun(15);
var bar1 = new Bar(this, 10);
var bar2 = new Bar(this, 20);
this.__defineGetter__("dun", function() {
return dun;
});
this.__defineGetter__("bar1", function() {
return bar1;
});
this.__defineGetter__("bar2", function() {
return bar2;
});
}
var myFoo = new Foo();
myFoo.bar1.value;
Merci.
Alors, je devrais coller à la façon dont je le fais maintenant? :) – Duncan
Oui, soit, ou vous définissez Bar à l'intérieur de Foo et ensuite utilisez la portée pour y accéder. –
@Duncan, je vous ai montré une autre façon de le faire dans ma nouvelle réponse (dont je ne suis pas sûr est mieux que de simplement passer ceci au constructeur), mais c'est une autre option à regarder. – jfriend00