ugrás a tartalomhoz

Hogyan tudom meg egy objektum nevét?

s_volenszki · 2008. Aug. 26. (K), 12.19
Sziasztok!

Az a kérdésem, ha van egy "valami" konstruktorom és annak egy "akarmi" objektuma:
  1. function valami(){  
  2.      
  3. }  
  4. akarmi = new valami();  
akkor a konstruktorban hogyan tudom kideríteni, hogy mi lett az objektum neve?

s_volenszki
 
1

A létrehozott objektumok elérése.

s_volenszki · 2008. Aug. 26. (K), 12.42
Az a kérdés is felmerült bennem, hogy hogyan tudom meg, hány darab és milyen nevű objektum van létrehozva egy konstruktoból?
4

kontnéner

toxin · 2008. Aug. 26. (K), 13.07
csinálsz neki egy konténerobjektumot benne egy tömb tagváltozót és beledobálod őket, név ekkor már nem kell
  1. var FooContainer = {                  
  2.             _container : [],                  
  3.             addElem : function(_obj){  
  4.                 this._container.push(_obj);  
  5.             },  
  6.             getLength : function(){  
  7.                 return this._container.length;  
  8.             },  
  9.             iterate : function(_func){  
  10.                 for(var i=0;i<this._container.length;i++){  
  11.                     _func(this._container[i]);  
  12.                 }  
  13.             }  
  14.         };  
  15.           
  16.         var FooClass = function(_fooBar){  
  17.             this._fooBar = _fooBar;  
  18.         };  
  19.           
  20.         FooContainer.addElem(new FooClass(1));  
  21.         FooContainer.addElem(new FooClass(2));  
  22.         FooContainer.addElem(new FooClass(3));  
  23.         console.log(FooContainer.getLength()) // 3;  
  24.         FooContainer.iterate(function(_fooObj){  
  25.             console.log(_fooObj._fooBar)  
  26.         }); // 1,2,3  
  27.           
üdv Csaba
2

this

toxin · 2008. Aug. 26. (K), 12.53
  1. function valami(){    
  2.    this.foo = "foo"    
  3. }    
  4. akarmi = new valami();   
ha nem a this akkor nemértem :)

üdv Csaba
3

Az lehet...

s_volenszki · 2008. Aug. 26. (K), 13.02
Az lehet, de a this-re azt mondja [object Object].

Nekem arra lenne szükségem, hogy a létrehozott objektum nevét megszerezhessem a konstruktorban. Tudom, hogy hülyeség de valami olyasmi, hogy this.ObjName és az = lenne az "akarmi"-vel.

Köszi, hogy segítesz!
5

[object Object].

toxin · 2008. Aug. 26. (K), 13.14
mi mondja ezt, kicsit a problémáról isirjál

üdv Csaba
6

Dialógus

s_volenszki · 2008. Aug. 26. (K), 13.38
Nagyon új vagyok a oop-ben, talán két hete kezdtem szakirodalmat olvasgatni. Úgy döntöttem, most már valami minta alkalmazáson keresztül el kezdem megtapsztalni az előnyöket.

Elhatároztam, hogy csinálok egy olyan konstruktort, ami dinamikous ablakot hoz létre a DOM-ban.
  1. function Dialog(paramtereke...){  
  2.    this.Open = function(){  
  3.       dialogId = 'ablak';  
  4.       $("body").append('<div id="' + dialogId  + '"><input type="button" value="Bezár" onclick="this.Close();"></div>');  
  5.    }  
  6.    this.Close = function(){  
  7.       ...  
  8.    }  
  9.    ....  
  10. }  
  11.   
  12. function Udvozold(paramtereke....){  
  13.    Udvozles = new Dialog(paramtereke....);  
  14.    Udvozles.Open();  
  15. }  
Nagyjából úgy néz ki, hogy egy gombnyomásra lefut az Udvozold(); függvény, de a bezárás gombnál nem érti a this-t! Ha viszont teszek egy másik gombot a dokumentumban akárhova az Udvozles.Close(); paranccsal, az bezárrja.

Ezért kellene tudnom a konstruktorban, hogy mi annak a példányka a neve.
7

a this-t kell megtanulni kezelni

rrd · 2008. Aug. 26. (K), 13.51
http://weblabor.hu/cikkek/oojsafelszinfolott (Objektumok, metódusok és a this)
http://webmania.cc/prototype-mintadarabok-3/

Másrészt ha most kezdesz oo-t tanulni Js-sel akkor jobban jársz ha először megismerkedsz egy JS keretrendszerrel, mert ezek sok sok ilyen feladat megoldását sokkal egyszerűbbé teszik.
8

Ismerek (használok) néhányat...

s_volenszki · 2008. Aug. 26. (K), 14.33
Szia!

Köszönöm a hozzászólásodat. Igen, ismerek és használok is néhányat (a $("body").append(); is jQuery-s), de úgy érzem eljutottam odáig, hogy most már az, hogy működik nem tölt el megelégedéssel, most azt akarom megérteni, hogy is működik!

s_volenszki
9

konkrét kérdés passz

toxin · 2008. Aug. 26. (K), 15.23
kicsit dolgozni is kellett, inline js-ben passzolnám, hogy lehet elérni az eredeti objektumot, maradt a kerülő út
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">  
  2. <html>  
  3.     <head>  
  4.         <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />  
  5.         <title>Untitled Document</title>         
  6.         <script type="text/javascript">  
  7.               
  8. function $(_id){ return document.getElementById(_id); };  
  9.   
  10. function Dialog(_params){  
  11.     this._params = _params;  
  12.     Dialog.open(_params.dialogId);  
  13. };  
  14.   
  15. Dialog.prototype.getId = function(){  
  16.     return this._params.dialogId;  
  17. };  
  18.   
  19. Dialog.open = function(_id){                  
  20.     $("wrapper").innerHTML += '<div id="' + _id  + '"><input type="button" onclick="Dialog.close(\''+ _id +'\')"value="Bezár"></div>';                  
  21. };            
  22. Dialog.close = function(_target){  
  23.     var id = typeof _target == "string" ? _target : _target.getId();   
  24.     $(id).parentNode.removeChild($(id));  
  25. };   
  26.   
  27. window.onload = function(){  
  28.     new Dialog({dialogId : "_1"});  
  29.     new Dialog({dialogId : "_2"});  
  30.     new Dialog({dialogId : "_3"});  
  31.       
  32.     Udvozles = new Dialog({dialogId : "_4"});  
  33.     setTimeout(function(){  
  34.         Dialog.close(Udvozles)  
  35.     },2000);  
  36. };  
  37.         </script>  
  38.     </head>  
  39.     <body>  
  40.         <div id="wrapper"></div>  
  41.     </body>  
  42. </html>  
open,close-t felvettem statikus metódusnak, a Dialog.close kaphatja a paramétereket id-ben is Dialog objektumban is, ellenőrzést hozzá kéne adni, így már viszonylag barátságosan, bár kerülővel, megoldható a feladat, sry de legalább gyártottam valamit, tanulni ebből is lehet :)

üdv Csaba
10

Hálás köszönet!

s_volenszki · 2008. Aug. 26. (K), 15.35
Hálásan köszönöm a segítséget, áttanulmányozom tüzetesen!

s_volenszki