Envoyé par
Sharcoux
p3ga5e, pourquoi ça marche pas ça ? Po compris
1 2 3 4
| function add(){
var me = this;
monBouton.addEventListener('click',me.remove,false);
} |
edit : si, ça y est, je crois que j'ai compris : addEventListener va executer
this.cadre.removeChild(this.boite);
donc monBouton.addEventLIstener va executer
monBouton.cadre.removeChild(monBouton.boite);
c'est ça?
Exacte ! (enfin comme dit p3ga5e, c'est pas addEvent qui va exécuter mais l’évènement lui-même)
alors qu'avec
function(){me.remove();/*this==monButton*/}
le this vaudra de nouveau "monBouton" mais peu importe puisqu'on ne l'utilisera pas et qu'on utilisera "me"(objet de maClasse) à la place. Et on appelera donc la méthode remove sur cette objet. et donc
this.cadre.removeChild(this.boite);
sera équivalent à
me.cadre.removeChild(me.boite);
avec me l'objet(de maClasse) qui a appelé "add" initialement.
edit:
monBouton.addEventListener('click',me.remove,false);
ne passe que la méthode "remove" comme argument, peu importe d'où tu la sors, le contexte ne joue que lors d'un appel(exécution).
c'est exactement comme si tu faisais :
monBouton.addEventListener('click',function(){this.cadre.removeChild(this.boite);},false);
puisque
me.remove == maClasse.prototype.remove == function(){this.cadre.removeChild(this.boite);}
Partager