11521 sujets

JavaScript, DOM et API Web HTML5

Salut,

Je me pose une question depuis ce matin, et je vois pas la différence (je ne la comprend pas à vrai dire) quel est la différence entre un
this.mavar;
et
mavar;
Quoi qu'il se passe, mon résultat est le même... this permettrait-il de s'assurer du context actuel de la variable ?
Modifié par JENCAL (29 Feb 2016 - 18:07)
Modérateur
Salut Jencal,

Exact, tout dépend du contexte et du scope/portée de ta variable (le mot clef var ou pas (d'où son importance) ). Pour le coup, ton this est l'équivalent de l'objet window (variable globale -> mauvaise pratique pour des raisons de collisions ou autres). Ce petit bout de script devrait t'aider dans la compréhension de mes propos :

this.maVar = 'hello tout le monde'; 
maVar = 'hello Jencal';

console.log(window.maVar);


function MonObjet(){
    this.maVar = 'Hey Jencal [smile]'; //this est l'équivalent de MonObjet
}

var x = new MonObjet();

console.log(x.maVar);


<<<EDIT
Sache que bientôt il va y avoir un autre mot clef qui réduira considérablement la portée de ta variable :
let (es6)
EDIT;
Modifié par niuxe (29 Feb 2016 - 22:03)
Pourquoi bientôt ? Smiley langue

C'est déjà utilisable en production avec Babel. Je conseille vraiment de passer à ES6 ça règle pas mal de soucis syntaxique notamment comme tu le soulignes au niveau de la gestion du scope avec les fonctions flechée et let & const.

D'ailleurs on préféra utiliser const généralement. Personnellement j'ai un peu du mal avec cette approche.

Je répond pas à ta question mais c'est un sujet qui me passionne donc je me suis permis Smiley smile
Après avoir lu tes liens,
je pense que je vais m'intéresser de plus près à ES6... merci.
Modérateur
Gili a écrit :
Pourquoi bientôt ? Smiley langue

C'est déjà utilisable en production avec Babel. Je conseille vraiment de passer à ES6 ça règle pas mal de soucis syntaxique notamment comme tu le soulignes au niveau de la gestion du scope avec les fonctions flechée et let &amp; const.

D'ailleurs on préféra utiliser const généralement. Personnellement j'ai un peu du mal avec cette approche.

Je répond pas à ta question mais c'est un sujet qui me passionne donc je me suis permis Smiley smile


Salut Gilli,

À vrai dire, depuis quelques temps, je m'intéresse beaucoup à l'ES6 et en effet, Babel ou autres (Google on t'aime) permettent de retranscrire le script en ES5.

En ce qui concerne les constantes, c'est la même chose qu'en php. Donc, une constante n'est pas tout à fait la même chose qu'une variable. On ne peut pas réaffecter une valeur à une constante d'où cette philosophie.

Il me semble tout de même que ce soit un peu prématuré de coder en ES6. Est ce que toi tu codes déjà en ES6 d'une manière industriel (un vrai projet pro) bien sûr ? Je te remercie beaucoup pour ton retour d'expérience. Smiley smile

JENCAL a écrit :
Après avoir lu tes liens,
je pense que je vais m'intéresser de plus près à ES6... merci.


Oui je te le conseille vivement. En plus si tu as des notions/pratiques de poo, tu vas être ravi. Smiley cligne
Modifié par niuxe (01 Mar 2016 - 14:00)
Salut Niuxe,

Oui je l'utilise dans un contexte de production. Sachant que ça peut se faire vraiment step-by-step. Tu peux commencer par utiliser juste let et const par exemple. Ca ne change pas grand chose au code généré en fait. C'est pour cela que je trouve dommage de ne pas l'utiliser dès à présent d'ailleurs. Rien que les arrows function (qui changent pas trop non plus le code généré) ça vaut la peine. Tu gagnes en lisibilité un truc de fou. En fait ES6 n'est que du sucre synthaxique donc faut y aller à fond !

"niuxe" a écrit :
En ce qui concerne les constantes, c'est la même chose qu'en php. Donc, une constante n'est pas tout à fait la même chose qu'une variable. On ne peut pas réaffecter une valeur à une constante d'où cette philosophie.

Je ne connais pas bien PHP. Mais je pense que le système n'est pas le même. D'où le fait que je suis partiellement pour utiliser const pour toutes les déclaration. En fait :
"Putain de code" a écrit :
Si vous avez déjà lu des posts ou des ressources parlant de const, méfiez-vous : ce ne sont pas des vraies constantes au sens valeur de variable. Ce sont des constantes au niveau référence. C’est à dire que le contenu d’un tableau ou d’un objet déclaré avec const bloque la réassignation de la variable, mais ne rend pas la valeur immuable.
On peut donc bien réassigné une valeur à la variable. Je pense pas que ce soit le cas en PHP. Je trouve ça un peu tendancieux. Je préfère utiliser const pour les vrais contantes mais la convention actuelle voudrait que l'on utiliser const dans la plupart des cas.
Modérateur
Salut Gili,

Désolé si j'ai mis un peu de temps à te répondre. Je suis en train d'emménager et je viens de récupérer une connexion internet.

Je te remercie beaucoup pour ton retour d'expérience. Perso, par rapport à ton retour et avoir lu quelques articles sur le sujet, je pense que je vais franchir le cap (projet perso en mode prod). Pour le taf, je n'ose pas trop en parler, sinon on va me regarder avec des yeux en forme de bille.

Pour le mot clef const, en fait je ne crois pas que ce soit de l'ES6 puisque cette commande existe depuis très longtemps. La première fois que je l'ai lu (environ 2009) c'était dans ce très bon bouquin : headfirst Javascript. Ce bouquin date depuis 2007. Je viens de voir qu'il y a eu une mise à jour.

Attention, const fonctionne de la même manière qu'en php. Smiley cligne

bon dev Smiley smile
Modifié par niuxe (03 Mar 2016 - 22:25)