Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno JavaScript - Problém s class

Ahoj, proč nefunguje taková kostra ? Veškeré funkce/metody jsou z venčí přístupné. Díky za info.

function myClass()
{
   this.myMethod1= myMethod1;
   this.myMethod2= myMethod2;

   function myMethod1()
   {
      this.mySubMethod11 = mySubMethod11;
      this.mySubMethod12 = mySubMethod12;

      function mySubMethod11()
      {
      }
      
      function mySubMethod12()
      {
      }
   }

   function myMethod2()
   {
      this.mySubMethod21 = mySubMethod21;
      this.mySubMethod22 = mySubMethod22;
      
      function mySubMethod21()
      {
      }
      
      function mySubMethod22()
      {
      }
   }
}

myclass = new myClass();
myclass.myMethod2.mySubMethod21();
Předmět Autor Datum
Musíš upravit ty první "property", aby jsi je vytvořil pomocí new a mohl uvnitř používat this napřík…
martin.developer 18.12.2015 18:08
martin.developer
Díky vyzkouším, jinak this mi v JS nefunguje nikde a netuším proč...
Honza Marek 18.12.2015 18:13
Honza Marek
Pokud znáš this z jiných jazyků, tak v JS funguje trošku jinak, doporučuji nastudovat. A new udělá t…
martin.developer 18.12.2015 18:24
martin.developer
Class funguje, díky moc, teď jdu nastudovat ten this...
Honza Marek 18.12.2015 18:27
Honza Marek
Jenom pro ukázku, varianta s .call() (funkce bude vykonána a jako this bude dosazen první argument f…
martin.developer 18.12.2015 18:31
martin.developer
Tak že pokud chci používat this, musím ho prvně získat ? Chápu to dobře ? Jinak díky za tip na knihu… poslední
Honza Marek 18.12.2015 19:29
Honza Marek

Jenom pro ukázku, varianta s .call() (funkce bude vykonána a jako this bude dosazen první argument funkce call)

function myClass()
{
   this.myMethod1 = {};
   myMethod1.call(this.myMethod1);
  
   this.myMethod2 = {};
   myMethod2.call(this.myMethod2);

   function myMethod1()
   {
      this.mySubMethod11 = mySubMethod11;
      this.mySubMethod12 = mySubMethod12;

      function mySubMethod11()
      {
      }
      
      function mySubMethod12()
      {
      }
   }

   function myMethod2()
   {
      this.mySubMethod21 = mySubMethod21;
      this.mySubMethod22 = mySubMethod22;
      
      function mySubMethod21()
      {
        console.log("test");
      }
      
      function mySubMethod22()
      {
        console.log("test2");
      }
   }
}


var myclass = {};
myClass.call(myclass);

myclass.myMethod2.mySubMethod21();

BTW: Všeobecně doporučuji ke studii používat knihu You Dont Know JS, zabíhá do detailů a pak pochopíš celou mechaniku JS.

Zpět do poradny Odpovědět na původní otázku Nahoru