Bonjour
Suite à diverses discussions sur ce forum, je suis en train de mettre en œuvre l'utilisation de this.method.bind(this) dans mes gestionnaires d'évènements, en particulier pour des formulaires.
J'ai donc écrit le code suivant:
Cela fonctionne très bien, mais je me pose une question:
Pour pratiquement toutes les balises <input type="text"> je crée en fait une fonction de traitement qui est un "double" de la même fonction. Il y a donc, me semble-t-il autant de duplicaton de cette fonction avec son environnement qu'il y a de balises concernées en gros cela doit correspondre à une multiplication des copies de mon objet.
Je n'ai qu'une vingtaine de ces balises dans ma page, donc ce n'est pas un gros problème, mais je me demande s'il n'y a pas une façon plus "économe" de traiter les choses, par exemple est-ce qu'il ne serait pas préférable d'écrire:
Votre avis m'intéresse au plus haut point!
Modifié par PapyJP (31 Dec 2016 - 12:46)
Suite à diverses discussions sur ce forum, je suis en train de mettre en œuvre l'utilisation de this.method.bind(this) dans mes gestionnaires d'évènements, en particulier pour des formulaires.
J'ai donc écrit le code suivant:
function myObject(...) {
........
this.form = ........;
........
this.changeItem = function() {
........
}
var inputs = this.form.getElementsByTagName('input');
for(var i = 0; i < inputs.length; i++) {
var curInput = inputs[ i ];
switch(curInput.type) {
case 'text':
if(...) curInput.addEventLisnter('change', this.changeItem.bind(this);
........
case 'button':
........
}
}
Cela fonctionne très bien, mais je me pose une question:
Pour pratiquement toutes les balises <input type="text"> je crée en fait une fonction de traitement qui est un "double" de la même fonction. Il y a donc, me semble-t-il autant de duplicaton de cette fonction avec son environnement qu'il y a de balises concernées en gros cela doit correspondre à une multiplication des copies de mon objet.
Je n'ai qu'une vingtaine de ces balises dans ma page, donc ce n'est pas un gros problème, mais je me demande s'il n'y a pas une façon plus "économe" de traiter les choses, par exemple est-ce qu'il ne serait pas préférable d'écrire:
var inputs = this.form.getElementsByTagName('input');
var changeFunction = this.changeItem.bind(this);
for(var i = 0; i < inputs.length; i++) {
var curInput = inputs[ i ];
switch(curInput.type) {
case 'text':
if(...) curInput.addEventLisnter('change', changeFunction);
........
case 'button':
........
}
Votre avis m'intéresse au plus haut point!
Modifié par PapyJP (31 Dec 2016 - 12:46)