objet : contenu qui contient son contenant

Le
thierry
Bonjour,

Soit un objet COMPLETION qui contient deux elements html :

COMPLETION = function(search,liste){
this.search = search;
this.liste = liste;
[]
this.search.obj = this;
search.addEventListener('keypress',this.keypressfunct,false);
}

COMPLETION.prototype = {
keypressfunct: function(e){
alert(this.obs.liste.id);
}
}

Dans le constructeur, l'EventListener 'keypress' est branché sur le
premier élément.

Dans la fonction de cet EventListener, je voudrais accéder au second
élément, mais le "this" de cette fonction est une référence au premier
élément qui ne permet pas d'accéder au second.

J'ai donc ajouter dans le constructeur:
this.search.obj = this;

Ainsi l'élément search contient une référence à l'objet dont il fait
partie, et je peux y accéder dans la fonction keypressfunct avec :
alert(this.obj.liste)

ça marche, mais je me demande si ça ne pose pas de problème ?
(en fait, ça me parait bizarre cette idée d'un contenu qui contient son
contenant).

Existe t-il une autre solution, ou celle-ci est-elle adaptée ?

Merci de vos idées !
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Y.D.
Le #22854491
Le 27/11/2010 09:21, thierry a écrit :
Soit un objet COMPLETION qui contient deux elements html [...]
Dans le constructeur, l'EventListener 'keypress' est branché sur le premier
élément.

Dans la fonction de cet EventListener, je voudrais accéder au second élément,
mais le "this" de cette fonction est une référence au premier élément qui ne
permet pas d'accéder au second.

J'ai donc ajouter dans le constructeur:
this.search.obj = this;

Ainsi l'élément search contient une *référence* à l'objet dont il fait partie [...]

(en fait, ça me parait bizarre cette idée d'un contenu qui contient son contenant).



Ici, rien ne contient rien. Tu l'as écrit, tu as simplement ajouté /une
référence/ comme propriété à l'élément HTML search vers l'objet javascript qui
contient une référence vers lui. Le risque inhérent a cette construction est la
circularité this.search.obj.search.obj.search.obj... Note que tu as la même
chose avec tous les objets HTML (puisqu'il faut pouvoir accéder aux parents et
descendants), par exemple, un objet HTMLInputElement, sa propriété form et le
nom de cet objet (par ex. truc) this.form.truc.form.truc.form.truc etc.

Existe t-il une autre solution, ou celle-ci est-elle adaptée ?



Il y a toujours plus d'un chemin... mais ce que tu proposes ici remplit son but,
et permet d'avoir plusieurs objets de ce type sur la même page.

--
Y.D.
Publicité
Poster une réponse
Anonyme