Cannot create an instance of a defined class in Javascript Cannot create an instance of a defined class in Javascript

I have defined a class which represent a Pokemon:

class Pokemon
            {
                constructor(id,nick,level,a1,a2,a3,a4)
                {
                    this.id=id;
                    this.name=setPokemonById(id);
                    this.nick=nick;
                    this.typeId=setTypeById(id);
                    this.type=setElementById(this.typeId);
                    this.level=level;
                    this.attack1=a1;
                    this.attack2=a2;
                    this.attack3=a3;
                    this.attack4=a4;
                    this.attack1CurrPP=this.attack1.getPP();
                    this.attack2CurrPP=this.attack2.getPP();
                    this.attack3CurrPP=this.attack3.getPP();
                    this.attack4CurrPP=this.attack4.getPP();
                    this.hp=generateHP(id,level);
                    this.currHP=this.hp;
                }
                getId() {return this.id;};
                getName() {return this.name;};
                getNick() {return this.nick;};
                getTypeId() {return this.typeId;};
                getType() {return this.type;};
                getLevelr() {return this.level;};
                getEvo() {return getEvolution(this.id); };
                hasEvo() {return canEvolve(this.id); };
                getAttack1() {return attack1; };
                getAttack2() {return attack2; };
                getAttack3() {return attack3; };
                getAttack4() {return attack4; };
                getAttack1CurrPP() {return attack1CurrPP; };
                getAttack2CurrPP() {return attack2CurrPP; };
                getAttack3CurrPP() {return attack3CurrPP; };
                getAttack4CurrPP() {return attack4CurrPP; };
                getHP() {return hp; };
                getCurrHP() {return currHP; };
            }

Additionally I have a class representing an attack:

class Attack
                {
                    constructor(id,name,typeId,power,acc,pp,forgetable)
                    {
                    this.id=id;
                    this.name=name;
                    this.typeId=typeId;
                    this.type=setElementById(typeId);
                    this.power=power;
                    this.acc=acc;
                    this.pp=pp;
                    this.forgetable=forgetable;
                    }
                    getId() { return this.id;};
                    getName() {return this.name;};
                    getTypeId() {return this.typeId;};
                    getType() {return this.type;};
                    getPower() {return this.power;};
                    getAcc() {return this.acc;};
                    getPP() {return this.pp;};
                    getForgetable() {return this.forgetable; };
                }

Also, I have global variables, representing a Pokemon.

        var pokemon1;

From some strange reason, creating an instance of Attack class works fine:

var water_gun=new Attack(1,"Water Gun",1,40,1,25,true);

However, creating an instance of Pokemon class fails.

 function addPokemon(pID,pLVL,pATK1,pATK2,pATK3,pATK4)
              {
                    if(!(pokemon1)) // If the first pokemon slot is available
                    {
                        pokemon1 = new Pokemon(pID,"Champion",pLVL,pATK1,pATK2,pATK3,pATK4);
                    }
              }

Why does defining an instance of Attack works, but not of Pokemon? The only difference I see is that pokemon1 receives a value inside a function. Should this be a problem?

Edit: Code



from Stackoverflow

Comments

Popular posts from this blog

\\u0000 cannot be converted to text error \\u0000 cannot be converted to text error

How to create @click on select menu in VueJS How to create @click on select menu in VueJS

Using Ts-Standard linting, JSDoc comment at beginning of file triggers "This rule requires the `strictNullChecks` compiler option" error Using Ts-Standard linting, JSDoc comment at beginning of file triggers "This rule requires the `strictNullChecks` compiler option" error