Un peu d'introspection ...

Tagged:

Bon en flash il n'y a visiblement rien de bien pratique pour faire du log ou du debug ... Enfin ... un truc de base : un var_dump par exemple !!!

Bref j'en ai fait un, il vaut ce qu'il vaut !

function toString(o, pref):String {
	var ret:String = "";
	var prefix:String = (typeof (pref) == "undefined") ? "" : pref;
	
	if (typeof (o) == "undefined") {
		return "{undefined}";
	} else if (typeof (o) == "number") {
		return "{Number} "+o;
	} else if (typeof (o) == "string") {
		return "{String} "+o;
	} else if (typeof (o) == "function") {
		return "{function}";
	}
	
	if (o.length) {
		ret += "\n"+prefix+"{Array}\n";
		prefix += "  ";
		for (var i = 0; i<o.length; i++) {
			ret += prefix+i+" = "+toString(o[i], prefix+"  ");
			if (typeof(o[i]) != "object") ret += "\n";
		}
	} else {
		ret += "\n"+prefix+"{Object}\n";
		prefix += "  ";
		for (var i in o) {
			ret += prefix+i+" : "+toString(o[i], prefix+"  ");
			if (typeof(o[i]) != "object") ret += "\n";
		}
	}
	return ret;
}
 
trace(toString(test));
trace(toString(toString));
trace(toString(["un", "deux", "trois"]));
trace(toString({un:"hein", deux:dheux, trois:["recursion", "quand", "tu", "nous", "tiens"], quatre: {ici: "un autreobjet", func: toString}}, "recursion: "));

résultat :

{undefined}
{function}

{Array}
  0 = {String} un
  1 = {String} deux
  2 = {String} trois


recursion: {Object}
recursion:   un : {String} hein
recursion:   deux : {undefined}
recursion:   trois : 
recursion:     {Array}
recursion:       0 = {String} recursion
recursion:       1 = {String} quand
recursion:       2 = {String} tu
recursion:       3 = {String} nous
recursion:       4 = {String} tiens
recursion:   quatre : 
recursion:     {Object}
recursion:       ici : {String} un autreobjet
recursion:       func : {function}

Bon c'est pas excellent, c'est perfectible, mais c'est pratique :)