Szerző Téma: Objektumok  (Megtekintve 2835 alkalommal)

0 Felhasználó és 1 vendég van a témában

Nem elérhető <madbence />

  • Teljes tag
  • ***
  • Hozzászólások: 1.630
  • Twitterista :)
    • Blogom
Re: Objektumok
« Válasz #8 Dátum: 2009. január 26., 18:41:53 »
Valaki mondja meg, hogy miért hiszi a _ReadyStateChange, hogy nincs a this-nek xmlhttp változója :), nem tudok rajönni.

Kód: Javascript
  1. var Rss={
  2.         Init:function()
  3.         {
  4.                 this.xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  5.         },
  6.         GetFeed:function(url, callback)
  7.         {
  8.                 this.xmlhttp.open("GET", url, true);
  9.                 this.xmlhttp.onreadystatechange=this._ReadyStateChange;
  10.                 this.xmlhttp.send(null);
  11.         },
  12.         _ReadyStateChange:function()
  13.         {
  14.                 if(this.xmlhttp.readyState == 4)
  15.                 {
  16.                         if(this.xmlhttp.status == 200)
  17.                         {
  18.                                 callback(this.xmlhttp.responseXML);    
  19.                         }
  20.                         else
  21.                         {
  22.                                 Debug.Trace(xml.getAllResponseHeaders());
  23.                         }
  24.                 }
  25.         }
  26. }
  27. Rss.Init();
  28. Rss.GetFeed("akarmi", function(){})
A kód JScript, de nem hiszem, hogy pont ebben van különbség. A _ReadyStateChange lefut rendesen 4-szer, ahogy kell, a rinyál a változó miatt.
mi chuck norris email címe? gmail@chucknorris.com
Blog: napszemuvegbe.tumblr.com
Twitter: twitter.com/madbence

Nem elérhető Warner

  • Adminisztrátor
  • Őstag
  • *****
  • Hozzászólások: 6.438
    • CodeNet
Objektumok
« Válasz #7 Dátum: 2008. augusztus 13., 20:23:23 »
Kösz Rimelek, ezt nem tudtam :)

JavaScript esetében azonban hasznos, hogy az objektumok létrehozás után is szabadon bővíthetők újabb tulajdonságokkal és tagfüggvényekkel.
Pl.:
Kód: Javascript
  1. var ob = new Object();
  2. ob.valtozo = "érték";
  3.  

De ez az osztályokra is igaz, a "prototípust" kell módosítani:
Kód: Javascript
  1. function header(level)
  2. {
  3. return("<h" + level + ">" + this.toString() + "</h" + level + ">");
  4. }
  5. String.prototype.asHeader = header;
  6.  
  7. document.write("PHP Studio".asHeader(1));
  8.  

Nem elérhető KisGabo

  • Törzstag
  • **
  • Hozzászólások: 919
  • Ifj.
Objektumok
« Válasz #6 Dátum: 2008. augusztus 13., 20:14:27 »
Ja hogy az egy tömb :megashok:

Hát ja, kavar :D

Nem elérhető <madbence />

  • Teljes tag
  • ***
  • Hozzászólások: 1.630
  • Twitterista :)
    • Blogom
Objektumok
« Válasz #5 Dátum: 2008. augusztus 13., 20:12:55 »
Én mindig is szerettem, mert jól bele lehet kavarodni :)
mi chuck norris email címe? gmail@chucknorris.com
Blog: napszemuvegbe.tumblr.com
Twitter: twitter.com/madbence

Nem elérhető Rimelek

  • Adminisztrátor
  • Őstag
  • *****
  • Hozzászólások: 8.942
    • rimelek.hu
Objektumok
« Válasz #4 Dátum: 2008. augusztus 13., 20:10:21 »
(Bár megjegyzem, hogy az osztály törzsében ez a kettőspontos értékadás nekem is újdonság :D).

A kettőspontos értékadás egy asszociatív tömböt jelent. aho a kettőspont előtt van a kulcs, és utána a az érték. az asszociatív tömböt pedig a kapcsos zárójelek között lehet megadni.

Ez egy "normál" numerikus indexelésű tömb, csak az értékekkel
Kód: Javascript
  1. var tomb = [ertek1, ertek2,ertek3];
Ez pedig egy asszociatív tömb:
Kód: Javascript
  1. var tomb = { kulcs1 : ertek1 kulcs2 : ertek22, kulcs3 : ertek3 };

És mivel egy tömb maga is objektum, így lesz az egészből objektum :)

Szerintem egész jó módszer.
Egyszerűen létezem, és lézengek a Földön,
mint idióta szellem, kinek kastélya a börtön.

Nem elérhető KisGabo

  • Törzstag
  • **
  • Hozzászólások: 919
  • Ifj.
Objektumok
« Válasz #3 Dátum: 2008. augusztus 13., 20:04:10 »
Most teljesen leesett a TinyMCE módszere. Nem is gondoltam volna... A példányosítható osztály kreálása meg valami katasztrófa :D Tényleg primitív. Osztálynak az is a lényege, hogy ne legyenek szétszórva a függvények a fájlban, hanem egy törzsben, egy behúzással beljebb legyenek. Legalábbis nekem ezt is jelenti :). Ezt máshogy kellet volna kitalálni :)

Nem elérhető Warner

  • Adminisztrátor
  • Őstag
  • *****
  • Hozzászólások: 6.438
    • CodeNet
Objektumok
« Válasz #2 Dátum: 2008. augusztus 13., 19:55:45 »
A TinyMCE ezen kódja egy anonymus osztályt hoz létre. Ez azt jelenti, hogy nincsen neki neve, definiáláskor készítve lesz belőle egy objektum, de utána már nem lehet elérni az osztályt. Tehát az osztaly változó egy objektum, nem egy osztály, emiatt nem tudod később példányosítani.
(Bár megjegyzem, hogy az osztály törzsében ez a kettőspontos értékadás nekem is újdonság :D).
Ez a kód pedig hasonló módon egy anonymus függvényt készít az osztaly objektum fuggveny tulajdonságába:
Kód: Javascript
  1. fuggveny : function(param1, param2) {
  2.     //függvény törzse
  3.   }
Ha kipróbálod, látszik, hogy objektum:
Kód: Javascript
  1. document.write(osztaly.valtozo1);

Ha neked nem ilyen kell, hanem olyan osztály, amiből többször is tudsz példányosítani, akkor mutatom azt:
Kód: Javascript
  1. function Osztaly(nev, kor)
  2. {
  3. this.nev = nev;
  4. this.kor = kor;
  5. this.lakcim; // Ennek nem adok értéket, nem muszáj mindnek a konstruktorban.
  6. }
Ez lényegében egy osztálykonstruktort definiál függvényként, amit már lehet példányosítani:
Kód: Javascript
  1. var peldany = new Osztaly("Warner", 18);

Tagfüggvényt úgy tudsz belerakni az osztályba, hogy külön megírod a függvényt majd berakod az osztály egy tulajdonságába:
Kód: Javascript
  1. function Kiir()
  2. {
  3. document.write("Név: " + this.nev + "<br />Kor: " + this.kor);
  4. }
  5.  
  6. function Osztaly(nev, kor)
  7. {
  8. this.nev = nev;
  9. this.kor = kor;
  10. this.lakcim; // Ennek nem adok értéket, nem muszáj mindnek a konstruktorban.
  11. this.Kiiras =Kiir;
  12. }
  13.  
  14. var peldany = new Osztaly("Warner", 18);
  15. peldany.Kiiras();
  16.  

Ha primitívnek érzed a JS objektumkezelését, akkor tökéletesen jól érzed :)

Nem elérhető KisGabo

  • Törzstag
  • **
  • Hozzászólások: 919
  • Ifj.
Objektumok
« Válasz #1 Dátum: 2008. augusztus 13., 19:27:17 »
Bocs, hogy béna kérdés, de JS-ben nem vagyok otthon. Néztem googlén az osztályok létrehozását JS-ben. Nah, amit ott találtam, valahogy nem értettem meg a logikáját... Ezért kilestem TinyMCE-ből, az hogy csinálja. Így:
Kód: Javascript
  1. var osztaly = {
  2.   valtozo1 : "érték",
  3.   valtozo2 : "érték",
  4.   fuggveny : function(param1, param2) {
  5.     //függvény törzse
  6.   }
  7. }
  8.  

Az oldalon létrehozok egy példányt, így: var peldany = new osztaly;

Mozilla hibakonzol:
Idézet
osztaly is not a constructor

Értem, osztaly nem egy konstruktőr... De nem nagyon tudok a hibaüzenetből kiindulni. Azt én is tudom, hogy nem konstrüktőr :D
Mi a gond? Köszi
« Utoljára szerkesztve: 2008. augusztus 13., 19:38:31 írta KisGabo »