création d'une XMLHttpRequest : "const" ou pas ?

Petit nouveau ! | 6 Messages

16 juin 2017, 13:45

Bonjour tous,

En cherchant des exemples pour faire un appel Ajax, je vois différentes façons de créer l'objet XMLHttpRequest(), avec ou sans "const" devant :
const req1 = new XMLHttpRequest();
req2 = new XMLHttpRequest();


J'ai commencé à développer mes fonctions javascript (natif, pas de angular ou jquery) avec "const" pour chaque appel ajax (évidemment, j'ai donc un nom différent pour chaque appel).

Mais finalement, je me demande à quoi ça sert ? Est-ce que ça optimise le code par ex, en permettant de ne pas recréer la requête à chaque appel de fonction JS ? Ou comme je vois ça principalement sur des sites "mozilla" (ex https://developer.mozilla.org/fr/docs/W ... ttpRequest) c'est une préco pour Firefox ?
Ou finalement, vaut-il mieux retirer "const" ?

Merci pour tout conseil ;)
Vincent

Avatar de l’utilisateur
Administrateur PHPfrance
Administrateur PHPfrance | 7234 Messages

16 juin 2017, 15:03

Bonjour,
"const" permet de définir une constante et génère une erreur si on essaye de la redéfinir.
Je pense que c'est davantage une bonne pratique qui permet d'éviter d'écraser une variable de façon involontaire.

La doc MDN explique cela assez bien : https://developer.mozilla.org/fr/docs/W ... ions/const
Quand tout le reste a échoué, lisez le mode d'emploi...

Petit nouveau ! | 6 Messages

16 juin 2017, 15:52

Merci, j'avais vu cette doc aussi, avant d'aller sur le forum ;) j'aurais peut-être dû le préciser.

Ma question est plutôt de savoir s'il y a un intérêt spécifique, dans le cadre d'un objet XMLHttpRequest ?
En effet, pour faire le parallèle avec Java, à chaque création d'objet, il y a allocation de place dans la mémoire (qui est nettoyée quand l'objet ne sert plus), mais si l'objet est inchangé, le fait de le déclarer comme une constante le conserve en mémoire et accélère les traitements puisqu'il n'y a pas besoin de le recréer à chaque fois. Cela peut être utile, surtout si l'objet est souvent réutilisé. Par contre, ça consomme un peu plus de mémoire.

Est-ce qu'en javascript c'est la même chose ?
Je constate que pour faire un appel ajax, je dois d'abord créer mon objet XMLHttpRequest avant de pouvoir l'utiliser. Je me suis dis que si lors de la création, je le déclare en tant que constante, alors lorsque je repasse sur ma fonction js, l'objet n'est pas redéclaré (puisqu'il existe déjà) et donc le traitement est plus rapide ?
Par contre, si j'ai 10 appels ajax possibles dans mon script, j'ai forcément 10 objets à déclarer et qui seront stockés en mémoire...

Ma question est peut-être plus claire ainsi... :D

Petit nouveau ! | 6 Messages

16 juin 2017, 15:53


Avatar de l’utilisateur
Administrateur PHPfrance
Administrateur PHPfrance | 7234 Messages

16 juin 2017, 16:00

Je ne pense pas que ça ait un impact significatif sur la gestion de la mémoire, mais il faudrait le tester pour le confirmer de façon sûre et certaine.
Je le vois plus, notamment dans l'exemple que tu donnes avec XMLhttpRequest, comme le fait d'éviter que la variable req qui contient l'objet ajax se retrouve écraser par autre chose.
Quand tout le reste a échoué, lisez le mode d'emploi...

Petit nouveau ! | 6 Messages

16 juin 2017, 16:02

ok, ça marche. Donc, finalement, je peux "simplifier" mon code, en enlevant la déclaration sous forme de constante, j'ai "req" dans chaque méthode, ça évite de se tromper lors des copier-coller...

Et si tu as un outil à me conseiller pour tester l'impact mémoire, je suis preneur. Merci !

Avatar de l’utilisateur
Administrateur PHPfrance
Administrateur PHPfrance | 7234 Messages

16 juin 2017, 16:34

Et si tu as un outil à me conseiller pour tester l'impact mémoire, je suis preneur. Merci !
Les outils de développement web de Chrome devrait permettre de faire cela :
https://developers.google.com/web/tools ... -problems/
Quand tout le reste a échoué, lisez le mode d'emploi...

Petit nouveau ! | 6 Messages

16 juin 2017, 16:43

ok, je regarde