Typiquement, si nous utilisons simplement alert(object);
, il apparaîtra comme [object Object]
. Comment imprimer tous les paramètres de contenu d'un objet en JavaScript?
Si vous utilisez Firefox, alert(object.toSource())
devrait suffire à des fins de débogage simples.
Cela vous donnera une très belle sortie avec un objet JSON en retrait:
alert(JSON.stringify(YOUR_OBJECT_HERE, null, 4));
Le deuxième argument modifie le contenu de la chaîne avant de la renvoyer. Le troisième argument spécifie le nombre d'espaces à utiliser comme espaces blancs pour la lisibilité.
En plus d'utiliser un débogueur, vous pouvez également accéder à tous les éléments d'un objet à l'aide d'une boucle foreach
. La fonction printObject
suivante devrait permettre à alert()
votre objet d'afficher toutes les propriétés et les valeurs respectives.
function printObject(o) {
var out = '';
for (var p in o) {
out += p + ': ' + o[p] + '\n';
}
alert(out);
}
// now test it:
var myObject = {'something': 1, 'other thing': 2};
printObject(myObject);
L'utilisation d'un outil d'inspection DOM est préférable car elle vous permet de creuser sous les propriétés qui sont des objets eux-mêmes. Firefox a FireBug mais tous les autres principaux navigateurs (IE, Chrome, Safari) ont aussi des outils de débogage intégrés que vous devriez vérifier.
Si vous voulez seulement avoir une représentation sous forme de chaîne d'un objet, vous pouvez utiliser la fonction JSON.stringify
, en utilisant une bibliothèque JSON .
Imprimer le contenu de l'objet que vous pouvez utiliser
console.log(obj_str);
vous pouvez voir le résultat dans la console comme ci-dessous.
Object {description: "test"}
Pour ouvrir la console, appuyez sur F12 dans le navigateur chrome, vous trouverez l'onglet de la console en mode débogage.
Vous pouvez utiliser le noeud til.inspect (objet) pour afficher la structure de l'objet.
Cela est particulièrement utile lorsque votre objet a des dépendances circulaires, par exemple.
$ node
var obj = {
"name" : "John",
"surname" : "Doe"
}
obj.self_ref = obj;
util = require("util");
var obj_str = util.inspect(obj);
console.log(obj_str);
// prints { name: 'John', surname: 'Doe', self_ref: [Circular] }
Si ce cas, JSON.stringify lève une exception: TypeError: Converting circular structure to JSON
Vous devriez envisager d'utiliser FireBug pour le débogage JavaScript. Il vous permettra d'inspecter de manière interactive toutes vos variables et même de passer en revue des fonctions.
Utilisez dir (objet). Ou vous pouvez toujours télécharger Firebug pour Firefox (vraiment utile).
Javascript pour tous!
String.prototype.repeat = function(num) {
if (num < 0) {
return '';
} else {
return new Array(num + 1).join(this);
}
};
function is_defined(x) {
return typeof x !== 'undefined';
}
function is_object(x) {
return Object.prototype.toString.call(x) === "[object Object]";
}
function is_array(x) {
return Object.prototype.toString.call(x) === "[object Array]";
}
/**
* Main.
*/
function xlog(v, label) {
var tab = 0;
var rt = function() {
return ' '.repeat(tab);
};
// Log Fn
var lg = function(x) {
// Limit
if (tab > 10) return '[...]';
var r = '';
if (!is_defined(x)) {
r = '[VAR: UNDEFINED]';
} else if (x === '') {
r = '[VAR: EMPTY STRING]';
} else if (is_array(x)) {
r = '[\n';
tab++;
for (var k in x) {
r += rt() + k + ' : ' + lg(x[k]) + ',\n';
}
tab--;
r += rt() + ']';
} else if (is_object(x)) {
r = '{\n';
tab++;
for (var k in x) {
r += rt() + k + ' : ' + lg(x[k]) + ',\n';
}
tab--;
r += rt() + '}';
} else {
r = x;
}
return r;
};
// Space
document.write('\n\n');
// Log
document.write('< ' + (is_defined(label) ? (label + ' ') : '') + Object.prototype.toString.call(v) + ' >\n' + lg(v));
};
// Demo //
var o = {
'aaa' : 123,
'bbb' : 'zzzz',
'o' : {
'obj1' : 'val1',
'obj2' : 'val2',
'obj3' : [1, 3, 5, 6],
'obj4' : {
'a' : 'aaaa',
'b' : null
}
},
'a' : [ 'asd', 123, false, true ],
'func' : function() {
alert('test');
},
'fff' : false,
't' : true,
'nnn' : null
};
xlog(o, 'Object'); // With label
xlog(o); // Without label
xlog(['asd', 'bbb', 123, true], 'ARRAY Title!');
var no_definido;
xlog(no_definido, 'Undefined!');
xlog(true);
xlog('', 'Empty String');
Vous pouvez utiliser json.js à partir de http://www.json.org/js.html pour modifier les données JSON en données chaîne.
Vous pouvez donner à vos objets leurs propres méthodes toString dans leurs prototypes.
Vous pouvez également utiliser la méthode Object.inspect () de Prototype, qui "Retourne la représentation sous forme de chaîne orientée débogage de l'objet".
Fonction simple pour alerter le contenu d'un objet ou d'un tableau.
Appelez cette fonction avec un tableau, une chaîne ou un objet pour en alerter le contenu.
Une fonction
function print_r(printthis, returnoutput) {
var output = '';
if($.isArray(printthis) || typeof(printthis) == 'object') {
for(var i in printthis) {
output += i + ' : ' + print_r(printthis[i], true) + '\n';
}
}else {
output += printthis;
}
if(returnoutput && returnoutput == true) {
return output;
}else {
alert(output);
}
}
Usage
var data = [1, 2, 3, 4];
print_r(data);
Internet Explorer 8 possède des outils de développement similaires à Firebug pour Firefox. Opera a Opera DragonFly et Google Chrome a également un élément appelé Outils de développement (Maj + Ctrl + J).
Voici une réponse plus détaillée pour déboguer JavaScript dans IE6-8: tilisation des 'Outils de développement' de IE8 pour déboguer des versions antérieures IE