Wenn wir nur alert(object);
verwenden, wird dies normalerweise als [object Object]
angezeigt. Wie drucke ich alle Inhaltsparameter eines Objekts in JavaScript?
Wenn Sie Firefox verwenden, sollte alert(object.toSource())
für einfache Debugging-Zwecke ausreichen.
Dadurch erhalten Sie eine sehr schöne Ausgabe mit eingerückten JSON-Objekten:
alert(JSON.stringify(YOUR_OBJECT_HERE, null, 4));
Das zweite Argument ändert den Inhalt des Strings, bevor er zurückgegeben wird. Das dritte Argument gibt an, wie viele Leerzeichen zur besseren Lesbarkeit als Leerzeichen verwendet werden sollen.
Abgesehen von der Verwendung eines Debuggers können Sie auch mit einer foreach
-Schleife auf alle Elemente eines Objekts zugreifen. Die folgende printObject
Funktion sollte alert()
Ihr Objekt sein und alle Eigenschaften und entsprechenden Werte anzeigen.
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);
Die Verwendung eines DOM-Inspektionstools ist vorzuziehen, da Sie damit unter den Eigenschaften graben können, bei denen es sich um Objekte handelt. Firefox hat FireBug, aber in allen anderen wichtigen Browsern (IE, Chrome, Safari) sind Debugging-Tools integriert, die Sie überprüfen sollten.
Wenn Sie nur eine Zeichenfolgendarstellung eines Objekts wünschen, können Sie die Funktion JSON.stringify
mit einer JSON-Bibliothek verwenden.
Drucken Sie den Inhalt des Objekts aus, das Sie verwenden können
console.log(obj_str);
sie können das Ergebnis in der Konsole wie unten sehen.
Object {description: "test"}
Wenn Sie im Browser chrome die Taste F12 drücken, wird im Debug-Modus die Registerkarte console angezeigt.
Sie können Node's til.inspect (object) verwenden, um die Objektstruktur auszudrucken.
Dies ist besonders hilfreich, wenn Ihr Objekt zirkuläre Abhängigkeiten aufweist, z.
$ 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] }
In diesem Fall löst JSON.stringify eine Ausnahme aus: TypeError: Converting circular structure to JSON
Sie sollten erwägen, FireBug zum Debuggen von JavaScript zu verwenden. Sie können alle Variablen interaktiv überprüfen und sogar schrittweise durch Funktionen navigieren.
Benutze dir (Objekt). Oder Sie können immer Firebug für Firefox (sehr hilfreich) herunterladen.
Javascript für alle!
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');
Sie können json.js von http://www.json.org/js.html verwenden, um json-Daten in Zeichenfolgendaten zu ändern.
Sie können Ihren Objekten in ihren Prototypen eigene toString-Methoden zuweisen.
Sie können auch die Object.inspect () - Methode von Prototype verwenden, die "die debug-orientierte Zeichenfolgendarstellung des Objekts zurückgibt".
Einfache Funktion zum Warnen des Inhalts eines Objekts oder eines Arrays.
Rufen Sie diese Funktion mit einem Array oder einer Zeichenfolge oder einem Objekt auf, das den Inhalt benachrichtigt.
Funktion
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);
}
}
Verwendungszweck
var data = [1, 2, 3, 4];
print_r(data);
Internet Explorer 8 verfügt über Entwicklertools, die Firebug für Firefox ähneln. Opera hat Opera DragonFly, und Google Chrome hat auch so genannte Entwicklertools (Umschalt + Strg + J).
Im Folgenden finden Sie eine ausführlichere Antwort zum Debuggen von JavaScript in IE6-8: Verwenden der IE8-Entwicklertools zum Debuggen früherer IE-Versionen