Class constructor JAVASCRIPT

Secţiune dedicată începatorilor.

Moderatori: Moderatori, Start Moderator

Avatar utilizator
Khamoaset
Average Member
Mesaje: 160
Membru din: Joi Iul 21, 2011 4:29 pm
Contact:

Class constructor JAVASCRIPT

Mesajde Khamoaset » Dum Sep 08, 2013 3:31 pm

Salutare, tuturor! :D
Am inceput si eu sa fac functii de javascript OOP cu clase... dar e ceva ceva care nu-mi iese ceea ce vreau eu, de exemplu.. daca in javascript sau consola scriu asa: Player('Khamoaset'); //result Player Khamoaset ---> asta e bine, dar si asta la fel: Player('Khamoaset').setLevel(900); //result Nivel 900 .... dar pentru mai multe setari ca gen: Player(nume).setLevel(numar).setPoints(numar). ...etc . cum pot face mai multe clase de acelasi functie ?
codul:

Cod: Selectaţi tot

      function HTML(msg){
         var message = document.getElementById('windows').innerHTML = msg;
         return message;
      }

function Player(g){
   this.getName = function(o){
      this.o = o;
      var t = HTML('Nume '+this.o);
      return t;
   };
   this.setLevel = function(oj){
      this.oj = oj;
      var tj = HTML('Nivel '+this.oj);
      return tj;
   }
   this.g = g;
   var gh = HTML('Player '+this.g);
   return gh;
}


codul asta merge numai 2 setari pentru mai multe nu merge ca gen: Player(un_nume).setLevel(un_nr).setPoints(un_nr).setXXXX(). etc.. nu stiu cum pot face.. ma puteti ajuta ?


"`"Atata timp cat putem zambi, cauza nu-i inca pierduta!"`"

'*'`Nimic nu este mai presus pe Pamant decat OMUL, nimic nu este mai presus in OM decat MINTEA si SUFLETUL!`'*'

Avatar utilizator
mndrk
Senior Member
Mesaje: 271
Membru din: Mar Iun 22, 2010 12:02 pm
Localitate: Bucuresti
Contact:

Re: Class constructor JAVASCRIPT

Mesajde mndrk » Lun Sep 09, 2013 10:25 am

Ai avut grijă ca funcțiile respective să returneze obiectul corect? În exemplul trimis de tine nu se vede ce clasă conține setPoints. Din ce observ pare că funcțiile îți returnează un text, mesajul trimis ca parametru către HTML().

De asemenea în HTML poți scrie direct (nu modifică funcționalitatea cu nimic..doar te scapă de un rând și o variabilă în plus):

Cod: Selectaţi tot

function HTML(msg){
  return document.getElementById('windows').innerHTML = msg;
}


Nu am înțeles nici clasa Player de ce arată așa. Poți scurta astfel functiile:

Cod: Selectaţi tot

function Player(g){
   this.getName = function(o){
      return HTML('Nume '+o);
   };
   this.setLevel = function(oj){
      return HTML('Nivel '+ oj);
   }
   ...
}

Daca te folosești totuși de valorile dela o/oj și în alte locuri în clasă atunci poți lăsa si rândurile: this.o = o; respectiv this.oj = oj;

Dar rezultatul o să fie în continuare un text, cum a fost până acum. Dacă vrei să returneze pe el însuși să poți apela după exemplul dat de tine atunci modifici astfel:

Cod: Selectaţi tot

function Player(g){
   this.getName = function(o){
       HTML('Nume '+o);
       return this; // se returneaza obiectul si nu textul adaugat in interiorul elementului
   };
   this.setLevel = function(oj){
      HTML('Nivel '+ oj);
      return this; // se returneaza obiectul si nu textul adaugat in interiorul elementului
   }
   ...
}

Avatar utilizator
Khamoaset
Average Member
Mesaje: 160
Membru din: Joi Iul 21, 2011 4:29 pm
Contact:

Re: Class constructor JAVASCRIPT

Mesajde Khamoaset » Lun Sep 09, 2013 11:07 am

Multumesc.. oricum merge si asta pe care am facut-o aseara:

Cod: Selectaţi tot

function Player(){

  return {
         setLevel: function(lvl){
              ...code...
           return this;
        },
        setExp: function(exp){
                 ...code...
           return this;
        }
       .....etc
  };

}

si in consola sau cod js merge setarea: Player().setLevel(900); //ca exemplu

deci multumesc pentru idee.. 8) 8) 8) 8)
"`"Atata timp cat putem zambi, cauza nu-i inca pierduta!"`"



'*'`Nimic nu este mai presus pe Pamant decat OMUL, nimic nu este mai presus in OM decat MINTEA si SUFLETUL!`'*'


Înapoi la “PHP Incepători”

Cine este conectat

Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 49 vizitatori