Imprimer le contenu de L'objet JavaScript? [dupliquer]
cette question a déjà une réponse ici:
- Comment afficher un objet JavaScript? 31 réponses
typiquement si nous utilisons juste alert(object);
il affichera comme [object Object]
. Comment imprimer tous les paramètres de contenu D'un objet en JavaScript?
15 réponses
si vous utilisez Firefox, alert(object.toSource())
devrait suffire pour le débogage simple.
cela vous donnera une très belle sortie avec l'objet JSON indenté:
alert(JSON.stringify(YOUR_OBJECT_HERE, null, 4));
Le deuxième argument modifie le contenu de la chaîne avant de la retourner. Le troisième argument spécifie le nombre d'espaces à utiliser comme espace blanc pour la lisibilité.
outre l'utilisation d'un débogueur, vous pouvez également accéder à tous les éléments d'un objet en utilisant une boucle foreach
. La fonction suivante printObject
devrait alert()
votre objet montrant 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);
utiliser un outil D'inspection DOM est préférable car il vous permet de creuser sous les propriétés qui sont des objets eux-mêmes. Firefox a FireBug mais tous les autres navigateurs importants (IE, Chrome, Safari) ont aussi des outils de débogage intégré que vous devriez vérifier.
si vous voulez juste avoir une représentation string d'un objet, vous pouvez utiliser la fonction JSON.stringify
, en utilisant une bibliothèque JSON .
Imprimer le contenu de l'objet, vous pouvez utiliser le bouton
console.log(obj_str);
vous pouvez voir le résultat dans la console comme ci-dessous.
Object {description: "test"}
pour la console ouverte appuyez sur F12 dans le navigateur chrome, vous trouverez onglet console en mode de débogage.
vous pourriez utiliser .inspecter (objet) pour imprimer la structure de l'objet.
il 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] }
Il que les cas JSON.stringify lance exception: TypeError: Converting circular structure to JSON
vous devriez envisager d'utiliser FireBug pour le débogage JavaScript. Il vous permettra d'inspecter interactivement toutes vos variables, et même de passer par les fonctions.
utiliser 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 donner à vos objets leurs propres méthodes de lancement dans leurs prototypes.
vous pouvez utiliser json.js de http://www.json.org/js.html pour changer les données json en données string.
vous pouvez également utiliser L'objet de Prototype.inspecter (), qui Retourne le débogage chaîne orienté représentation de l'objet".
fonction Simple pour alerter le contenu d'un objet ou d'un tableau .
Appelez cette fonction avec un tableau ou une chaîne de caractères ou un objet qui alerte le contenu.
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);
}
}
Utilisation
var data = [1, 2, 3, 4];
print_r(data);
Internet Explorer 8 dispose d'outils de développement qui est similaire à Firebug pour Firefox. Opera a Opera DragonFly, et Google Chrome a aussi quelque chose appelé outils de développement (Shift+Ctrl+J).
Voici une réponse plus détaillée pour déboguer JavaScript dans IE6-8: utilisant les "outils de développement" IE8 pour déboguer les versions précédentes D'IE
j'ai fait face à un problème similaire, la raison pour cela était que je fais usage d'ajax pour récupérer des données. Dans ce cas, j'avais fait deux asynchrone appel ajax. Dans l'un, je rends la chaîne msg et affiche en alerte. Dans le deuxième appel ajax Je fetch arraylist dans le format json et le décoder dans js. Donc ma deuxième requête utilise pour traiter en premier et je devenais alerte de l'objet.
Vérifiez. 1. alerte doit contenir la chaîne de caractères. 2. Si vous obtenez arrayList ou tout autre objet le décoder.
Tout le meilleur!