Comment affecter une iteration sur une collection d'objets à un objet unique
Bonjour,
Bon le titre est super long,mais je ne sais pas comment définir mieux mon incompréhension en ce qui concerne l'affectation d'objet.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
|
function Planete(options){
options = options || {};
this.name=options.name||"";
//...
}
Planete.prototype={
set:function(jour,lieu){
if(!jour){jour=Maintenant;}
if(!lieu){lieu=Ici;}
//... initialize toutes les propriétés d'une planéte
switch(this){
case SysSol.corps.SOLEIL :
datSol(jour,lieu);
break;
//... fonction déterminant les données du soleil
case SysSol.corps.LUNE :
datLun(jour,lieu);
break;
// ... fonction déterminant les données de la lune
default :
datPlan(jour,lieu);
break;
// ... pour le reste
}
return this;
}
}
var SysSol = {
corps:{
SOLEIL = new Planete({
name : 'Soleil',
o : {val: 1.243,correction : 4.456}
//...
},
LUNE =new Planete({
}
//...
}
constantes:{
//...
}
for(var i in SysSol.corps){SysSol.corps[i].set();} |
Jusque là ça marche. Mais j'ai quand même l'impression de faire des bévues:roll:
Par contre à partir de là je comprend plus ce qui se passe
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
function systemeSolaireEvents(lieu,dure){
pdat = {}; // positions de tous les objets pour la période
var j=0;
var jdeb = lieu.date-2;
var jmax=jdeb+dure;
while(jdeb<jdmax){
pdat[j]= {};
for (var i in SysSol.corps) {pdat[j][i] = SysSol.corps[i].set(jd,obs);}
j++;
jdeb++;
}
}
systemeSolaireEvents(ici,7); |
pdat[j][i] représente, pour toutes les valeurs de j, toujours les mêmes valeurs pour l'objet i qui est d'ailleurs la valeur qu'aurait cet objet à jdeb+8???:cry:
Une âme charitable pourrait-t-elle m'expliquer ce comportement (ou m'indiquer où je pourrais avoir une explication car même si Google est ton ami encore faut-il savoir quelle question poser!) et éventuellement si c'est pas trop abuser une piste pour résoudre ce problème.
Merci.