Notions sur les références

Parent Previous Next



Notions sur les références



En Javascript et comme dans beaucoup de langages, le contenu des variables est « passé par valeur ». Cela veut donc dire que si une variable nick1 contient le prénom « Clarisse » et qu'on affecte cette valeur à une autre variable, la valeur est copiée dans la nouvelle. On obtient alors deux variables distinctes, contenant la même valeur :

var nick1 = 'Clarisse';

var nick2 = nick1;


Si on modifie la valeur de nick2, la valeur de nick1 reste inchangée : normal, les deux variables sont bien distinctes.


Les références


Outre le « passage par valeur », le Javascript possède un « passage par référence ». En fait, quand une variable est créée, sa valeur est mise en mémoire par l'ordinateur. Pour pouvoir retrouver cette valeur, elle est associée à une adresse que seul l'ordinateur connaît et manipule (on ne s'en occupe pas).

Quand on passe une valeur par référence, on transmet l'adresse de la valeur, ce qui va permettre d'avoir deux variables qui pointent sur une même valeur ! Malheureusement, un exemple théorique d'un passage par référence n'est pas vraiment envisageable à ce stade du tutoriel, il faudra attendre d'aborder le chapitre sur la création d'objets. Cela dit, quand on manipule une page Web avec le DOM, on est confronté à des références, tout comme dans le chapitre suivant sur les événements.


Les références avec le DOM


Schématiser le concept de référence avec le DOM est assez simple : deux variables peuvent accéder au même élément. Regardez cet exemple :

var newLink     = document.createElement('a');

var newLinkText = document.createTextNode('Le Site du Zéro');

 

newLink.id  = 'sdz_link';

newLink.href = 'http://www.siteduzero.com';

 

newLink.appendChild(newLinkText);

 

document.getElementById('myP').appendChild(newLink);

 

// On récupère, via son ID, l'élément fraîchement inséré

var sdzLink = document.getElementById('sdz_link');

 

sdzLink.href = 'http://www.siteduzero.com/forum.html';

 

// newLink.href affiche bien la nouvelle URL :

alert(newLink.href);


La variable newLink contient en réalité une référence vers l'élément <a> qui a été créé. newLink ne contient pas l'élément, il contient une adresse qui pointe vers ce fameux <a>. Une fois que l'élément HTML est inséré dans la page, on peut y accéder de nombreuses autres façons, comme avec getElementById(). Quand on accède à un élément via getElementById(), on le fait aussi au moyen d'une référence.


Ce qu'il faut retenir de tout ça, c'est que les objets du DOM sont toujours accessibles par référence, et c'est la raison pour laquelle ce code ne fonctionne pas :

var newDiv1 = document.createElement('div');

var newDiv2 = newDiv1; // On tente de copier le <div>


Eh oui, si vous avez tout suivi, newDiv2 contient une référence qui pointe vers le même <div> que newDiv1. Mais comment dupliquer un élément alors ? Eh bien il faut le cloner, et c'est ce que nous allons voir maintenant !


Créé avec HelpNDoc Personal Edition: Créer des livres électroniques facilement

Site à deux balles