J'ai écrit une fonction pour vider un JS objet dans une forme lisible, même si la sortie n'est pas en retrait, mais il ne devrait pas être trop difficile d'ajouter que: j'ai fait cette fonction à partir de celui que j'ai fait pour Lua (qui est beaucoup plus complexe) qui a géré ce problème d'indentation.
Ici, c'est le "simple" version:
function DumpObject(obj)
{
var od = new Object;
var result = "";
var len = 0;
for (var property in obj)
{
var value = obj[property];
if (typeof value == 'string')
value = "'" + value + "'";
else if (typeof value == 'object')
{
if (value instanceof Array)
{
value = "[ " + value + " ]";
}
else
{
var ood = DumpObject(value);
value = "{ " + ood.dump + " }";
}
}
result += "'" + property + "' : " + value + ", ";
len++;
}
od.dump = result.replace(/, $/, "");
od.len = len;
return od;
}
Je vais chercher à l'améliorer un peu.
Note 1: Pour l'utiliser, il n' od = DumpObject(something)
et l'utilisation de la do.dump. Compliquée parce que je voulais la len valeur trop (nombre d'éléments) pour un autre but. Il est trivial de faire le retour de la fonction uniquement de la chaîne.
Note 2: il ne gère pas les boucles dans les références.
MODIFIER
J'ai fait le retrait de la version.
function DumpObjectIndented(obj, indent)
{
var result = "";
if (indent == null) indent = "";
for (var property in obj)
{
var value = obj[property];
if (typeof value == 'string')
value = "'" + value + "'";
else if (typeof value == 'object')
{
if (value instanceof Array)
{
// Just let JS convert the Array to a string!
value = "[ " + value + " ]";
}
else
{
// Recursive dump
// (replace " " by "\t" or something else if you prefer)
var od = DumpObjectIndented(value, indent + " ");
// If you like { on the same line as the key
//value = "{\n" + od + "\n" + indent + "}";
// If you prefer { and } to be aligned
value = "\n" + indent + "{\n" + od + "\n" + indent + "}";
}
}
result += indent + "'" + property + "' : " + value + ",\n";
}
return result.replace(/,\n$/, "");
}
Choisissez votre indentation de la ligne de l'appel récursif, et vous accolade de style par la commutation de la ligne de commentaire après celui-ci.
... Je vois que tu fouettée en place votre propre version, qui est la bonne. Les visiteurs auront le choix.