[JS] Object bekijken

Pagina: 1
Acties:

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Topicstarter
Hoe kan ik een object bekijken?

Ik bedoel hier mee.
Ik heb een onbekend object hoe kan ik bekijken welke elementen/properties hij heeft?

Programmer - an organism that turns coffee into software.


  • Pelle
  • Registratie: Januari 2001
  • Laatst online: 18:23

Pelle

🚴‍♂️

Op donderdag 13 december 2001 14:41 schreef LuCarD het volgende:
Ik heb een onbekend object hoe kan ik bekijken welke elementen/properties hij heeft?
Heel makkelijk:
code:
1
2
3
4
5
6
7
8
9
10
11
    function blahBlah() {
      this.name = "dit is een object";
      this.doel = "uitleggen hoe dit werkt";
      this.resultaat = "jij snapt het! :)";
    }

    naamVanObject = new blahBlah();

    for (i in naamVanObject) {
      document.write(i + " = " + naamVanObject[i] + "<br>");
    }

In plaats van 'naamVanObject' kun je natuurlijk ook iets van document.forms[0] neerzetten ofzo, of gewoon document. Moet je de document.write even vervangen voor een alert(), kun je lachen :)

  • Clay
  • Registratie: Oktober 1999
  • Laatst online: 22-06 13:51

Clay

cookie erbij?

Is erg handig idd om naar properties van objecten te kijken. Vooral als je wazige dingen moet gaan scripten en je weet eigenlijk niet welke dingen je in verschillede browsers tot je beschikking hebt.
Ik gebruik zelf altijd deze, is bijna hetzelfde maar dan in een alert:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
function getProperties(obj) {
   var res = "";
   for(var i in obj) {
    res += i +' \t-  ';
    if(typeof obj[i] == 'function') { 
       res += '[function]';
    } else {
       res += obj[i];
    }  
    res += '\n';
   }
   alert(res);
}

Wat wel kut is is dat je van niet-custom objecten geen functies krijgt zo, alleen properties. Bijvoorbeeld zal Ns4 je hiermee niet vertellen dat een layer/div een functie resizeTo of moveTo heeft, al is dat wel zo.
Iemand een idee hoe dat wel kan?

Instagram | Flickr | "Let my music become battle cries" - Frédéric Chopin


  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Topicstarter
Ik heb er dit van gemaakt:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
function checkObject(object)
{
    test=window.open();
    test.document.open();
//
//  showObject(object,test.document);
//
// Updated ivm te veel recursie.
      showObject(object,test.document,0);
    test.document.close();
}

//
//function showObject(object,where)
//
// Updated ivm te veel recursie.
function showObject(object,where,depth)
{
where.write("<UL>");
for (i in object) {
//
//        if (typeof object[i] == "object")
//
// Updated ivm te veel recursie.
        if (typeof object[i] == "object" && depth < 10)
        {
//
// Updated ivm te veel recursie.
                depth++;
            where.write("<LI><B>" + i + " = " + object[i] + "</B></LI>");
//
//              showObject(object[i],where);
//
// Updated ivm te veel recursie.
            showObject(object[i],where, depth);
        }
        else
        {
          where.write("<LI>" + i + " = " + object[i] + "</LI>");
        }
    }
where.write("</UL>");
}

Maar sommige objecten verwijzen ook naar hun zelf |:( tenminste dat denk ik ... aangezien hij in een loop blijft lopen....

Hoe kan ik dit afvangen?

[Edit]
diepte tellertje gemaakt zodat hij niet meer over loopt maar hij is nog niet optimaal andere ideeen ?

Programmer - an organism that turns coffee into software.


Verwijderd

Op donderdag 13 december 2001 15:38 schreef LuCarD het volgende:
Maar sommige objecten verwijzen ook naar hun zelf |:( tenminste dat denk ik ... aangezien hij in een loop blijft lopen....

Hoe kan ik dit afvangen?

[Edit]
diepte tellertje gemaakt zodat hij niet meer over loopt maar hij is nog niet optimaal andere ideeen ?
Ja, ik denk dat het hier door komt:
code:
1
for (i in object) {

Hier wordt i als een global variable gedeclareerd. Dat betekent dat als ie de recursie induikt en hij opnieuw het for-loopje gebruikt hij dezelfde variable i gebruikt om te 'tellen'.

Gebruik daarom altijd (kan bijna nooit kwaad, of je moet het zo bedoelen):
code:
1
for (var i [...]) {

Door de 'var' wordt het altijd een local variable en vermijd je dit probleem.

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Topicstarter
Op donderdag 13 december 2001 15:56 schreef Blues het volgende:

een heleboel.....
Maar helaas het werkte niet....

Programmer - an organism that turns coffee into software.


  • Woudloper
  • Registratie: November 2001
  • Niet online

Woudloper

« - _ - »

Op donderdag 13 december 2001 15:25 schreef Clay het volgende:
[..]
Wat wel kut is is dat je van niet-custom objecten geen functies krijgt zo, alleen properties. Bijvoorbeeld zal Ns4 je hiermee niet vertellen dat een layer/div een functie resizeTo of moveTo heeft, al is dat wel zo.
Iemand een idee hoe dat wel kan?
Ja, dat zou ik nou ook wel willen weten.... Heb daar al eens naar lopen zoeken met Google alleen nooit wat kunnen vinden...

Verwijderd

Op donderdag 13 december 2001 15:25 schreef Clay het volgende:
Bijvoorbeeld zal Ns4 je hiermee niet vertellen dat een layer/div een functie resizeTo of moveTo heeft, al is dat wel zo.
Iemand een idee hoe dat wel kan?
Dit is mijn beste suggestie: http://www.oreilly.com/catalog/jscript4/ :o

Kijk ook eens naar: http://www.brainjar.com/dhtml/domviewer/default.asp

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Topicstarter
thx....

Dat zocht ik.,...

Programmer - an organism that turns coffee into software.


  • Woudloper
  • Registratie: November 2001
  • Niet online

Woudloper

« - _ - »

Op donderdag 13 december 2001 16:21 schreef Blues het volgende:

[..]

Kijk ook eens naar: http://www.brainjar.com/dhtml/domviewer/default.asp
Deze is goed!! *D

Vind de weergave alleen nog niet zo, maar dat verander ik zelf we ff... >:)
Pagina: 1