En cherchant à supprimer une dépendance à un objet global (attaché au document
javascript) j’ai découvert qu’on pouvait modifier le this
fourni à une fonction attachée à un événement.
Exemple :
document.body.addEventListener('keydown', this.keyDown);
Dans ce cas, le this
qui sera fourni à la fonction keyDown()
sera l’élément document.body
vu que c’est lui auquel est rattaché le gestionnaire d’événement.
En utilisant la fonction bind() on peut modifier ce comportement :
document.body.addEventListener('keydown', this.keyDown.bind(this));
Maintenant le this
qui sera fourni sera l’object contenant cet appel.
Le seul bémol c’est que du coup, dans la fonction appelée sur le déclenchement de l’événement, on a plus l’info sur l’object auquel est attaché l’événement. Dans ce cas là, il faut peut-être prévoir un argument supplémentaire à la fonction appelée pour fournir aussi le scope ; mais là on dépasse le cadre de ma petite note…
1 De Bernard -
Serait-ce le début d’un téléautoapprentissage : un effet des forces obscures agissant lors d’un confinement… ?
Attention tout de même: le Système n’aime pas que ses sujets re-trouvent trop d’indépendance, même si c’est pour faire la java…
2 De Franck -
Non pas le début, la suite ; je m’intéresse à Javascript depuis quelques temps déjà et j’entreprends de moderniser l’existant de Dotclear ou de comprendre ce que l’ami biou a fait pour un plugin (cf ce billet) et éventuellement m’en servir côté cœur de Dotclear ;-)