Newsgroup: it.comp.lang.javascript
Titolo: Verificare un oggetto vuoto

Come verificare velocemente che un oggetto (Object) sia vuoto (cioé {})?
Max

 Come verificare velocemente che un oggetto (Object) sia vuoto (cioé {})?
Mai avuto la necessità, a naso verificherei un .length, cosa restituisce?
-- 
"That until there is no longer first class
And second class citizens of any nation
Until the colour of a man's skin
Is of no more significance than the colour of his eyes
Me say war"
B.M.

> Mai avuto la necessitą, a naso verificherei un .length, cosa restituisce?
Se č un oggetto restituisce 0 dato che non č un array :-/
Max

 Se è un oggetto restituisce 0 dato che non è un array :-/
A me è venuto in mente questo, ma for...in non va con IE4 (non mi viene in
mente in questo momento su come fare per IE4, se serve fallo sapere che
qualcuno ci ragionerà):
 var Obj={};
 window.onload=function() {
  var EsistenzaObj=false;
  for(pippo in Obj) {
   EsistenzaObj=true;
   break;
  }
  alert("L'oggetto "+(EsistenzaObj?"":"NON ")+"esiste");
 }
-- 
"e mai che mi sia venuto in mente
 di essere più ubriaco di voi
 di essere molto più ubriaco di voi"
									  F.D.A.

> for...in non va con IE4
Non va? Sicuro? :-/

 Non va? Sicuro? :-/
Ahimé sì, la reference di Microsoft dice che occorre versione di scripting
5.0 (ovviamente se lasci IE4 e ti scarichi scripting 5.6 funzionerà, ma non
penso che un client segua questa procedura: se è IE4 al 99,9% avrà motore
di scripting 3.0)
Se noti giusto ieri (o ieri l'altro?) ho inserito proprio una domanda su
come ciclare le proprietà di un oggetto in IE4, ma non ho ottenuto
risposta.
-- 
"Affacciati affacciati benedici, guardaci
 guardaci...guardaci!
 Tanto sono quasi duemila anni che stai a guardare!"
									    E.B.

 risposta.
Aspita... ho visto. Sul mio Javascript - La guida non ne č accennato :-/

 Aspita... ho visto. Sul mio Javascript - La guida non ne è accennato :-/
Non è accennato su come fare con IE4 o non parla proprio del costrutto
for..in?
Se non dice come fare per IE4 forse è perché non vi è modo (io ho questo
dubbio...)


 for..in?
Il libro dice sempre quando non è compatibile o ci sono bug per ie4 o ns4 o
inferiori... solo in pochi casi l'autore si "scorda" :S

 inferiori... solo in pochi casi l'autore si "scorda" :S
In msdn è indicato chiaramente versione 5:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/js56jsstmforin.asp
-- 
"E' l' ignoranza che crea l'intolleranza
 di gente cieca e senza coscienza"
									  S.S.S.

Ho visto :) Stai lavorando su un progetto che deve andare anche su IE4?
A proposito ma attachevent() registra le funzioni degli eventi in modo
opposto?
Max

 opposto?
Non lo so, č un metodo IE-Only (vedi addEventListener). Se cerchi (non ne
sono sicurissimo ma quasi) Zer0 ha postato tempo fa un addEventListener
cross-browser.


 Come verificare velocemente che un oggetto (Object) sia vuoto (cioé {})?
Non si fa. O ti cicli le proprietà, o nulla.
Ma è difficile che serva una cosa del genere. Direi che il tuo scopo è
un'altro, e che stai impostando l'approccio sbagliato.
Se hai bisogno di sapere se un un Object ({} è semplicamente l'object
initializer, ma non cambia nulla) è "vuoto" significa che lo stai usando
per un particolare caso, tipo, ad esempio, come "container" di oggetti
(HashTable, Associative Array, etc). In tal caso, ti conviene largamente
usare un oggetto "non primitivo" più adatto al tuo scopo.
-- 
.ZER0//sign
"When you have eliminated the impossible, whatever remains,
however improbable, must be the truth." (S.H.)

 Se è un oggetto restituisce 0 dato che non è un array :-/
Restituisce "undefined", più che zero. :)
"length" è semplicemente una proprietà che non esiste.
