11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour à tous,
Voici mon interrogation, j'essaye de la poser de manière simple avec le plus petit code possible
Si quelqu'un maîtrisant bien les concepts des mécanismes internes de javascript pouvait m'éclairer, je lui en serais très reconnaissant.


var point = function() {}
point.prototype = {
libelle : '',
coords : []
}
var p1 = new point();
p1.libelle = 'ceci est mon point 1' ;
p1.coords.push(-3);p1.coords.push(4) ;

var p2 = new point();
alert(p2.libelle) ; //ok-> vide
p2.libelle = 'ceci est mon point 2' ;
p2.coords.push(0);p2.coords.push(1) ;

alert(p1.libelle) ; //ok->ceci est mon point 1
alert(p2.libelle) ; //ok->ceci est mon point 2
alert(p1.coords[0]) ; //ok-> -3
alert(p2.coords[0]) ; //-3 !!! Pourquoi pas 0 ?? Ceci quelque soit le navigateur...



Je regle le souci en modifiant le code de cette façon :

var point = function() {
   this.coords = [];
}


Mais j'aimerais comprendre pourquoi l'attribut tableau coords ne se réinitialise pas à la construction d'un objet, et récupère la valeur de l'objet précédent ?

Merci beaucoup par avance

Emmanuel
Modifié par manoux (15 Mar 2011 - 15:46)