Skip to content
Advertisement

Why can’t I acces a static function in a static Object from the same Class?

i’m learning extends Class in javascript with narrow function class.

In the Cards Class: I’ve made an static Object and i can’t have acces to the static variable this.number from the Object info, precisely in “function”.

Can you give me a way to have access to static variable. I can’t change the structure of the Object

Zoom on the problem:

  static number = 44;

  static info = {
    name : "Games",
    function(game){
      console.log("fonction");
      console.log("best card is "+game.best);
      game.draw();
      console.log(this.number);  <======= CAN'T HAVE ACCES TO STATIC VARIABLE NUMBER 
    }
  }

I call with :

President.info.function(partie1);

It return :

best card is 2 Heart
7 Heart
undefined 

I’ve an another question why “partie1.name()” give me the error “TypeError: partie1.name is not a function” The whole code

class Games {
  constructor(name)
  {
    this.name = name;
    this.joueurs = 2;
  }

  name(){
    console.log(this.name);
  }

  nombre(){
    console.log(this.joueurs);
  }
}

let Cards = Base => class extends Base {
  constructor(name){
    super(name);
    this.best = "King Heart";
  }

  static number = 44;

  draw(){
    console.log("7 Heart");
  }

  static info = {
    name : "Games",
    function(game){
      console.log("fonction");
      console.log("best card is "+game.best);
      game.draw();
      console.log(this.number);
    }
  }
}

let Dices = Base => class extends Base {
  constructor(name){
    this.name = name;
    this.Dices = [1,2,3,4,5,6];
  }
}


class President extends Cards(Games){
  constructor(){
    super("President");
    this.best = "2 Heart";
  }
  
  static drawBest(game){
    console.log(game.best);
  }

}


let duel = new Games("duel");
duel.nombre(); // 2

let partie1 = new President();
President.drawBest(partie1); 
//2 Heart

//partie1.name(); 
//TypeError: partie1.name is not a function 

President.info.function(partie1); 
// function 
// best card is 2 Heart
// 7 Heart
// undefined ??? 

 

Advertisement

Answer

FIXED :

static info = {
    name : "Games",
    function : (game) => {
      console.log("fonction");
      console.log("best card is "+game.best);
      game.draw();
      console.log(Cards.number); //undefined
      console.log(this.number); //undefined
    }
  }
User contributions licensed under: CC BY-SA
3 People found this is helpful
Advertisement