vediamo se ce qualcuno che ce la fa ...

sto scrivendo un caz~o di script che faccia introspection di un oggetto.

1 - il metodo l'ho creato argomentando Object cosi tutti gli oggetti possiedono questo benedetto introspection().

2 - chiaramente non so quanto profondo sia l'oggetto quindi sono andato di ricorsione.

3 - per motivi di leggibilita' ho cercato di tenere traccia del livello di profondita' raggiunto in una varibile privata e legata a Object.prototype.introspection() via closure

il problema e' che funziona! in realta' mi aspettavo che l'indentazione venisse sbagliata. In particolare l'emento foo.d e indentato correttamente (e' al primo livello) anche se mi apettavo un'indentatura sbagliata. Non capisco perche? ma JavaScript finisce il ciclo for in prima di passare a ricorsioni eventuali?

codice:
<pre>

<script type="text/javascript">

Object.prototype.introspection = (function () {
	var tab = 0;
	return function () {
		var i;
		var indentation = "";
		for (i = 0; i < tab; i++) {
			indentation = indentation + "\t";
		}
		tab++;
		var o = this;
		for (p in o) {
			if (o.hasOwnProperty(p)) {
				if (typeof (o[p]) !== "object") {
					document.write(indentation + p + " : " + o[p] + " n tabs : " + tab + "\r");   
				}
				else {
					document.write(indentation + p + " n tabs : " + tab + "\r");
					o[p].introspection();               
				}
			}
		}
	}
})();	


var foo = {
    a: 1,
    b: "ciao",
    c: {
        deep1: "x",
        deep2: {
            deepdeep1: "s",
            deepdeep2: "www",
            deepdeep3: {
				question: "lost question",
				answer: 42
			}
        }
    },
	d: "last"
}

foo.introspection();

</script> 

</pre>
GRAZIE