PDA

View Full Version : [javascript] problema costruttore


titanum
22-09-2011, 12:34
Buongiorno a tutti, ho un problema con un oggetto javascript. Sto realizzando un programma di scacchi, e avevo creato questo costruttore per memorizzare i pezzi:

function pezzo(n,c)

{

this.nome=n;

this.casa=c;

this.flag=0;

}

ho poi due array di pezzi, uno per il bianco e uno per il nero, che inizializzo così:

//inizializzazione dei pezzi

bianco=new Array(); //array dei pezzi bianchi

nero=new Array(); //array dei pezzi neri





nero[0]=new pezzo("pedone",0);
nero[1]=new pezzo("pedone",1);
nero[2]=new pezzo("pedone",2);

//inserisce i pedoni nell'array nero:

for (i=3;i<30;i++)
{
nero[nero.length]=new pezzo("pedone",i+2);
}

//inserisce i pedoni nei rispettivi array:
for (i=0;i<8;i++)
{
bianco[i]=new pezzo("pedone",i+48);
}
nero[nero.length]=new pezzo("pedone",35);
nero[nero.length]=new pezzo("pedone",36);



//inserisce i pezzi nei rispettivi array: i re sono inseriti alla fine dei rispettivi array per facilitare la loro ircerca
bianco[8]=new pezzo("torre",56);
bianco[9]=new pezzo("cavallo",57);
bianco[10]=new pezzo("alfiere",58);




Il problema è che durante il gioco ho la necessità di duplicare questi due array, e per questo ho creato questa funzione:

function copia2(a)
{
var i=0;
var newarr=new Array();
var l=a.length;
for(i=0;i<l;i++)
{
newarr[i]=new pezzo(a[0].nome,a[0].casa);
}
return newarr;
}

Il problema è che lo script si blocca, nella console degli errori compare il messaggio
pezzo is not a constructor

Sapete dirmi qual'è il problema? Grazie!

titanum
25-09-2011, 13:30
Credo sia un problema di visibilità, però non riesco a capire come devo fare per poter usare il costruttore anche all'interno di funzioni (finora non avevo avuto questa necessità, la funzione costruttore è definita in alto ed anche gli array essendo variabili globali sono definiti fuori da funzioni), come posso fare?