11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour!

je me pose une question relative aux pointeurs ? :

<script type="text/javascript">
var tab1=new Array('a','b','c');
var tab2=tab1;
document.write(tab2.join(",")); // affiche a,b,c
tab1.push('d','e');
document.write(tab2.join(",")); // affiche a,b,c,d,e
</script>


or j'aimerais que la dernière ligne afiche a,b,c donc en fait j'aimerais que tab2 ne copie pas le pointeur sur tab1 mais le contenu de tab1 au moment de l'affectation, une idée ?
Bonsoir,

Plutôt tordu comme truc! Pourquoi ne fais-tu pas :
document.write(tab1.join(','));
???

N'oublie pas que tu as déclaré :
var tab2=tab1;
!!!

A++
Modifié par lddsoft (15 Mar 2011 - 20:16)
En JavaScript, l'opérateur = crée une référence. C'est un comportement similaire à ce qu'on trouve en Python, mais différent de PHP par exemple.

Un article à ce sujet:
http://my.opera.com/GreyWyvern/blog/show.dml/1725165

Je ne sais pas si la technique donnée (utiliser slice() pour obtenir une copie) est la bonne pratique en la matière.

Edit: un article en français, qui présente une fonction utilitaire incluse dans jQuery.
Modifié par fvsch (15 Mar 2011 - 20:46)
salut

slice, çà le fait.


var tab1=new Array('a','b','c');
var tab2 = tab1;
//document.write(tab2.join(","));
tab1.push('d','e');
var portion = tab2.slice(0,3);
document.write(portion.join(','));