nam: isObjectEmpty()

Hallo

Wie kann man in JavaScript testen, ob ein Objekt leer ist?

Ganz grob und pseudo:

  
var myObject = {};  
  
[...] Code der myObject befüllt oder auch nicht  
  
if (!isObjectEmpty(myObject)) {  
    doSomething();  
} else {  
    for (var key in myObject) {  
        if (myObject.hasOwProperty(key)) {  
            doCoolThingsWith(myOb);  
        }  
    }  
}  

Wie müsste ich isObjectEmpty() schreiben?

Dank und Gruss,
nam

  1. Hi,

    Wie kann man in JavaScript testen, ob ein Objekt leer ist?

    wie definierst Du "leer"?

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Hi

      wie definierst Du "leer"?

      Mit dem Zustand, den es nach der Initialisierung mit einem (leeren) Objektliteral hat:

        
      var leeresObjekt = {};  
      var nichtLeeresObjekt = {key: 'value'};  
      
      
  2. var myObject = {};

    [...] Code der myObject befüllt oder auch nicht

    if (!isObjectEmpty(myObject)) {
        doSomething();
    } else {
        for (var key in myObject) {
            if (myObject.hasOwProperty(key)) {
                doCoolThingsWith(myOb);
            }
        }
    }

    
    >   
    > Wie müsste ich isObjectEmpty() schreiben?  
      
    Am besten gar nicht. Wenn es darum geht, zu prüfen, ob das Objekt schon einen bestimmten Initialisierungsprozess durchlaufen hat, wo gewisse Eigenschaften angelegt wurden, dann gibt dem Objekt einen Flag und prüfe, ob der gesetzt ist.  
      
    Ansonsten kannst du nur auf eine Weise erfahren, ob ein Objekt leer ist: Durchlaufe die Member auf die obige Weise. Wenn der Code in der for-in-Schleife ausgeführt wird, dann hat es Member, ansonsten nicht.  
      
    var leer = true;  
    for (var key in myObject) {  
       if (myObject.hasOwProperty(key)) {  
          leer = false;  
       }  
    }  
    delete key;  
      
    Das würde ich aber nur im Notfall tun.  
      
    Mathias
    
    -- 
    [JavaScript-Erweiterung für das SELFHTML-Forum](http://forum.de.selfhtml.org/js/doku/)
    
    1. Hi Mathias

      dann gibt dem Objekt einen Flag und prüfe, ob der gesetzt ist.

      Hatte gehofft, dass das nicht nötig ist, hab's jetzt aber so gemacht.

      Vielen Dank für die Antwort.
      nam

  3. Wie kann man in JavaScript testen, ob ein Objekt leer ist?

    Ganz grob und pseudo:

    var myObject = {};

    [...] Code der myObject befüllt oder auch nicht

    if (!isObjectEmpty(myObject)) {
        doSomething();
    } else {
        for (var key in myObject) {
            if (myObject.hasOwProperty(key)) {
                doCoolThingsWith(myOb);
            }
        }
    }

    
    >   
    > Wie müsste ich isObjectEmpty() schreiben?  
      
    function isObjectEmpty(obj){  
      for (var prop in obj){  
        if (obj.hasOwnProperty(prop)){  
          return false;}}  
      return true;}  
      
    Wie sieht denn der Code, der das Objekt befüllt, aus? Kannst du dir nicht anderweitig merken, ob da was reinkommt oder nicht?
    
    -- 
    Reden ist Silber, Schweigen ist Gold, meine Ausführungen sind Platin.  
      
    Self-Code: sh:( ch:? rl:( br:> n4:( ie:{ mo:) va:) de:> zu:} fl:| ss:| ls:~ js:| 
    
    1. Hi Timo

        
      function isObjectEmpty (obj) {  
      	for (var prop in obj) {  
      		if (obj.hasOwnProperty(prop)) {  
      			return false;  
      		}  
      	}  
      	return true;  
      }  
      
      

      Ist tiptop!
      Ich habe aber inzwischen schon molilys Rat befolgt und es mit einem Flag gelöst.
      Trotzdem danke für deine Antwort.

      Gruss,
      nam