Wir müssen sehen, welche Methoden/Felder ein Objekt in Javascript hat.Gibt es eine Entsprechung für var_dump (PHP) in Javascript?
Antwort
Wie die anderen sagten, können Sie Firebug verwenden, und das wird Ihnen keine Sorgen über Firefox machen. Chrome & Safari hat beide eine integrierte Entwicklerkonsole, die eine fast identische Schnittstelle zur Firebug-Konsole hat, also sollte der Code über diese Browser übertragbar sein. Für andere Browser gibt es Firebug Lite.
Wenn Firebug keine Option für Sie ist, dann versuchen Sie dieses einfache Skript:
function dump(obj) {
var out = '';
for (var i in obj) {
out += i + ": " + obj[i] + "\n";
}
alert(out);
// or, if you wanted to avoid alerts...
var pre = document.createElement('pre');
pre.innerHTML = out;
document.body.appendChild(pre)
}
Ich würde empfehlen, gegen jede einzelne Eigenschaft alarmieren: Einige Objekte haben eine Menge von Eigenschaften und Sie werden da sein den ganzen Tag über "OK", "OK", "OK", "O ... verdammt, das war das Objekt, nach dem ich gesucht habe".
Ich würde es auch empfehlen - ehrlich gesagt würde ich nur console.debug verwenden.Aber ich habe auf die Möglichkeit des Schleifens hingewiesen - es ist Sache des Benutzers, was er mit jeder Eigenschaft machen will. – Ken
Ich benutze den Firebug schon seit einer Weile, wusste aber nichts von Firebug Lite, danke für den Hinweis . – codefin
@nickf, darf ich Sie bitten, einen Besuch bei http://stackoverflow.com/questions/9192990/how-to-print-the-associative-array-in-print-r-fashion-from-a-getjson zu haben -Anruf? Denken Sie daran, ob eine solche Anfrage im Kommentar akzeptabel ist. –
Wenn Sie Firefox verwenden, dann die firebug plug-in Konsole ist eine hervorragende Möglichkeit, Objekte zu untersuchen Sie
console.debug(myObject);
Alternativ können die Eigenschaften Schleife durch (einschließlich der Methoden) wie folgt aus:
for (property in object) {
// do what you want with property, object[property].value
}
Wenn Sie Verwenden Sie Firebug, können Sie console.log verwenden, um ein Objekt auszugeben, und ein hyperlinked, erforschbares Element in der Konsole zu erhalten.
Es kann nicht genug gesagt werden, dass Sie console.debug (object) dafür verwenden können. Diese Technik wird Sie buchstäblich Hunderte von Stunden pro Jahr sparen, wenn Sie dies tun für ein Leben: p
Das ist erstaunlich, ich hatte noch nie von console.debug (object) gehört und es hat mich eine Menge Zeit auf einem Formular gerettet, mit dem ich seit drei Tagen zu kämpfen habe. Mit 20 Minuten hatte ich es behoben. Vielen Dank! – ShiningLight
Viele moderne Browser unterstützen die folgende Syntax:
JSON.stringify(myVar);
console.dir (in Richtung der Unterseite der Seite,) entweder in firebug oder google-chrome web-inspector wird eine interaktive Auflistung der Eigenschaften eines Objekts ausgeben.
Siehe auch this Stack-O answer
Ein bisschen Verbesserung auf Nickf die Funktion für diejenigen, die in den kommenden nicht den Typ der Variablen kennen:
function dump(v) {
switch (typeof v) {
case "object":
for (var i in v) {
console.log(i+":"+v[i]);
}
break;
default: //number, string, boolean, null, undefined
console.log(typeof v+":"+v);
break;
}
}
I Nickf Antwort verbessert, so rekursiv es Schleifen durch Objekte:
function var_dump(obj, element)
{
var logMsg = objToString(obj, 0);
if (element) // set innerHTML to logMsg
{
var pre = document.createElement('pre');
pre.innerHTML = logMsg;
element.innerHTML = '';
element.appendChild(pre);
}
else // write logMsg to the console
{
console.log(logMsg);
}
}
function objToString(obj, level)
{
var out = '';
for (var i in obj)
{
for (loop = level; loop > 0; loop--)
{
out += " ";
}
if (obj[i] instanceof Object)
{
out += i + " (Object):\n";
out += objToString(obj[i], level + 1);
}
else
{
out += i + ": " + obj[i] + "\n";
}
}
return out;
}
die Frage aus dem Zusammenhang der Titel dieser Frage zu beantworten, hier ist eine Funktion, die etwas ähnlich wie bei einem PH tut P var_dump. Es gibt nur eine Variable pro Aufruf aus, aber es zeigt sowohl den Datentyp als auch den Wert an und es iteriert durch Arrays und Objekte [auch wenn sie Arrays von Objekten sind und umgekehrt]. Ich bin mir sicher, dass dies verbessert werden kann. Ich bin eher ein PHP-Typ.
/**
* Does a PHP var_dump'ish behavior. It only dumps one variable per call. The
* first parameter is the variable, and the second parameter is an optional
* name. This can be the variable name [makes it easier to distinguish between
* numerious calls to this function], but any string value can be passed.
*
* @param mixed var_value - the variable to be dumped
* @param string var_name - ideally the name of the variable, which will be used
* to label the dump. If this argumment is omitted, then the dump will
* display without a label.
* @param boolean - annonymous third parameter.
* On TRUE publishes the result to the DOM document body.
* On FALSE a string is returned.
* Default is TRUE.
* @returns string|inserts Dom Object in the BODY element.
*/
function my_dump (var_value, var_name)
{
// Check for a third argument and if one exists, capture it's value, else
// default to TRUE. When the third argument is true, this function
// publishes the result to the document body, else, it outputs a string.
// The third argument is intend for use by recursive calls within this
// function, but there is no reason why it couldn't be used in other ways.
var is_publish_to_body = typeof arguments[2] === 'undefined' ? true:arguments[2];
// Check for a fourth argument and if one exists, add three to it and
// use it to indent the out block by that many characters. This argument is
// not intended to be used by any other than the recursive call.
var indent_by = typeof arguments[3] === 'undefined' ? 0:arguments[3]+3;
var do_boolean = function (v)
{
return 'Boolean(1) '+(v?'TRUE':'FALSE');
};
var do_number = function(v)
{
var num_digits = (''+v).length;
return 'Number('+num_digits+') '+v;
};
var do_string = function(v)
{
var num_chars = v.length;
return 'String('+num_chars+') "'+v+'"';
};
var do_object = function(v)
{
if (v === null)
{
return "NULL(0)";
}
var out = '';
var num_elem = 0;
var indent = '';
if (v instanceof Array)
{
num_elem = v.length;
for (var d=0; d<indent_by; ++d)
{
indent += ' ';
}
out = "Array("+num_elem+") \n"+(indent.length === 0?'':'|'+indent+'')+"(";
for (var i=0; i<num_elem; ++i)
{
out += "\n"+(indent.length === 0?'':'|'+indent)+"| ["+i+"] = "+my_dump(v[i],'',false,indent_by);
}
out += "\n"+(indent.length === 0?'':'|'+indent+'')+")";
return out;
}
else if (v instanceof Object)
{
for (var d=0; d<indent_by; ++d)
{
indent += ' ';
}
out = "Object \n"+(indent.length === 0?'':'|'+indent+'')+"(";
for (var p in v)
{
out += "\n"+(indent.length === 0?'':'|'+indent)+"| ["+p+"] = "+my_dump(v[p],'',false,indent_by);
}
out += "\n"+(indent.length === 0?'':'|'+indent+'')+")";
return out;
}
else
{
return 'Unknown Object Type!';
}
};
// Makes it easier, later on, to switch behaviors based on existance or
// absence of a var_name parameter. By converting 'undefined' to 'empty
// string', the length greater than zero test can be applied in all cases.
var_name = typeof var_name === 'undefined' ? '':var_name;
var out = '';
var v_name = '';
switch (typeof var_value)
{
case "boolean":
v_name = var_name.length > 0 ? var_name + ' = ':''; // Turns labeling on if var_name present, else no label
out += v_name + do_boolean(var_value);
break;
case "number":
v_name = var_name.length > 0 ? var_name + ' = ':'';
out += v_name + do_number(var_value);
break;
case "string":
v_name = var_name.length > 0 ? var_name + ' = ':'';
out += v_name + do_string(var_value);
break;
case "object":
v_name = var_name.length > 0 ? var_name + ' => ':'';
out += v_name + do_object(var_value);
break;
case "function":
v_name = var_name.length > 0 ? var_name + ' = ':'';
out += v_name + "Function";
break;
case "undefined":
v_name = var_name.length > 0 ? var_name + ' = ':'';
out += v_name + "Undefined";
break;
default:
out += v_name + ' is unknown type!';
}
// Using indent_by to filter out recursive calls, so this only happens on the
// primary call [i.e. at the end of the algorithm]
if (is_publish_to_body && indent_by === 0)
{
var div_dump = document.getElementById('div_dump');
if (!div_dump)
{
div_dump = document.createElement('div');
div_dump.id = 'div_dump';
var style_dump = document.getElementsByTagName("style")[0];
if (!style_dump)
{
var head = document.getElementsByTagName("head")[0];
style_dump = document.createElement("style");
head.appendChild(style_dump);
}
// Thank you Tim Down [http://stackoverflow.com/users/96100/tim-down]
// for the following addRule function
var addRule;
if (typeof document.styleSheets != "undefined" && document.styleSheets) {
addRule = function(selector, rule) {
var styleSheets = document.styleSheets, styleSheet;
if (styleSheets && styleSheets.length) {
styleSheet = styleSheets[styleSheets.length - 1];
if (styleSheet.addRule) {
styleSheet.addRule(selector, rule)
} else if (typeof styleSheet.cssText == "string") {
styleSheet.cssText = selector + " {" + rule + "}";
} else if (styleSheet.insertRule && styleSheet.cssRules) {
styleSheet.insertRule(selector + " {" + rule + "}", styleSheet.cssRules.length);
}
}
};
} else {
addRule = function(selector, rule, el, doc) {
el.appendChild(doc.createTextNode(selector + " {" + rule + "}"));
};
}
// Ensure the dump text will be visible under all conditions [i.e. always
// black text against a white background].
addRule('#div_dump', 'background-color:white', style_dump, document);
addRule('#div_dump', 'color:black', style_dump, document);
addRule('#div_dump', 'padding:15px', style_dump, document);
style_dump = null;
}
var pre_dump = document.getElementById('pre_dump');
if (!pre_dump)
{
pre_dump = document.createElement('pre');
pre_dump.id = 'pre_dump';
pre_dump.innerHTML = out+"\n";
div_dump.appendChild(pre_dump);
document.body.appendChild(div_dump);
}
else
{
pre_dump.innerHTML += out+"\n";
}
}
else
{
return out;
}
}
Wenn Sie für PHP-Funktion umgewandelt in JS suchen, gibt es diese kleine Website: http://phpjs.org. Dort können Sie die meisten PHP-Funktionen zuverlässig in JS geschrieben bekommen.für Var_dump Versuch: http://phpjs.org/functions/var_dump/ (stellen Sie sicher den Top-Kommentar zu überprüfen, hängt dies von „Echo“, der auch von der gleichen Seite heruntergeladen werden kann)
console.log(OBJECT|ARRAY|STRING|...);
console.info(OBJECT|ARRAY|STRING|...);
console.debug(OBJECT|ARRAY|STRING|...);
console.warn(OBJECT|ARRAY|STRING|...);
console.assert(Condition, 'Message if false');
Diese sollten korrekt auf Google Chrome und Mozilla Firefox arbeiten (wenn Sie sind mit alten Firefox-Version ausgeführt wird, so müssen Sie Firebug Plugin)
auf Internet Explorer 8 oder höher Sie wie folgt installieren müssen tun:
- Launch „Developer tools, die von auf F12-Taste klicken
- Auf der Registerkarte Liste, klicken Sie auf "Script" Tab“
- Klicken Sie auf "Console" Button auf der rechten Seite
Weitere Informationen Sie diese URL besuchen: https://developer.chrome.com/devtools/docs/console-api
verwendete ich die erste Antwort, aber ich fühlte, dass eine Rekursion darin fehlte.
Das Ergebnis war:
function dump(obj) {
var out = '';
for (var i in obj) {
if(typeof obj[i] === 'object'){
dump(obj[i]);
}else{
out += i + ": " + obj[i] + "\n";
}
}
var pre = document.createElement('pre');
pre.innerHTML = out;
document.body.appendChild(pre);
}
Basierend auf früheren in diesem Beitrag nicht gefunden Funktionen. Rekursiver Modus und Einzug hinzugefügt. das gesamte Objekt sehen (alle verschachtelten Ebenen von Objekten und Variablen innerhalb it) in JSON Form
function dump(v, s) {
s = s || 1;
var t = '';
switch (typeof v) {
case "object":
t += "\n";
for (var i in v) {
t += Array(s).join(" ")+i+": ";
t += dump(v[i], s+3);
}
break;
default: //number, string, boolean, null, undefined
t += v+" ("+typeof v+")\n";
break;
}
return t;
}
Beispiel
var a = {
b: 1,
c: {
d:1,
e:2,
d:3,
c: {
d:1,
e:2,
d:3
}
}
};
var d = dump(a);
console.log(d);
document.getElementById("#dump").innerHTML = "<pre>" + d + "</pre>";
Ergebnis
b: 1 (number)
c:
d: 3 (number)
e: 2 (number)
c:
d: 3 (number)
e: 2 (number)
Sie wollen. JSON steht für JavaScript Object Notation, und das Ausdrucken einer JSON-Zeichenfolge Ihres Objekts ist eine gute Entsprechung von var_dump
(um eine Zeichenfolgendarstellung eines JavaScript-Objekts abzurufen). Glücklicherweise ist JSON sehr einfach in Code zu verwenden und das JSON-Datenformat ist auch sehr gut lesbar.
Beispiel:
var objectInStringFormat = JSON.stringify(someObject);
alert(objectInStringFormat);
Das folgende ist mein Favorit Var_dump/print_r Äquivalent in Javascript zu PHPs var_dump
.
- 1. Gibt es eine Ruby-Entsprechung für JavaScript Function.prototype.bind?
- 2. Gibt es eine ColdFusion-Entsprechung zu PHP für include_once?
- 3. Gibt es eine SSE2-Entsprechung für _mm_insert_epi32?
- 4. Gibt es eine Sprintf-Entsprechung für node.js
- 5. Gibt es eine SessionInfo() Entsprechung in Python?
- 6. Gibt es eine MessageBox-Entsprechung in WPF?
- 7. Gibt es in Firefox eine XDomainRequest-Entsprechung?
- 8. Gibt es eine Perl-Entsprechung für String.scan in Ruby?
- 9. Gibt es eine Entsprechung in C für C++ - Vorlagen?
- 10. Gibt es eine Entsprechung für stdcall in GCC?
- 11. Gibt es eine Entsprechung für den Android-Dienst in iOS?
- 12. Gibt es eine binäre Entsprechung von System.Text.StringBuilder?
- 13. C#: Gibt es eine JTable-Entsprechung?
- 14. Gibt es eine .NET-Entsprechung zu CoCreateInstanceEx?
- 15. Gibt es eine Entsprechung zu iOS 'identifierForVendor für Android?
- 16. Gibt es eine numpy.delete() Entsprechung für dünn besetzte Matrizen?
- 17. Gibt es eine GAC-Entsprechung für .NET Core?
- 18. Gibt es eine Entsprechung zu dbug (ein * wirklich * hübscher Druck für vars) für Javascript?
- 19. Gibt es eine Entsprechung zu getBoundingClientRect() für Textknoten?
- 20. Gibt es eine Swift-Array-Entsprechung für NSArray.arrayByAddingObjectsFromArray()?
- 21. (Rails) Gibt es eine Koala-Entsprechung für Twitter?
- 22. Gibt es eine gute JSON-Formatiererbibliothek für PHP oder Javascript?
- 23. Gibt es eine ähnliche Funktion wie setTimeout() (JavaScript) für PHP?
- 24. Gibt es eine Entsprechung von SQLBulkCopy in Npgsql
- 25. Gibt es eine Entsprechung zu .NET's BackgroundWorker in Vala?
- 26. Gibt es eine Entsprechung zu MATLABs Funktion rcond() in Julia?
- 27. Gibt es eine Entsprechung zu $ .connection.hub.start(). Done() Javascript-Methode für WPF-Anwendung?
- 28. Gibt es eine mod_perl2/Perl 5 Entsprechung zu PHP's ignore_user_abort()?
- 29. Gibt es eine forever.js-Entsprechung für PHP, um meine Skripte kontinuierlich auszuführen?
- 30. PHP Entsprechung für Markup in Nodejs
Es hängt teilweise davon ab, wie Sie es drucken möchten, aber das ist eine wirklich nette Implementierung, die HTML zurückgibt, die Sie dann an Ihr Dokument anhängen können (oder schreiben Sie an ein 'debug'div): http://james.padolsey.com/javascript/prettyprint-for-javascript/ –
Ich erstelle einen JavaScript-Code, der das Ergebnis wie das var_dump von PHP formatiert: http://rubsphp.blogspot.com/2011/03/vardump-para-javascript. html –
Ich fand diesen Code Snippet viel besser und ich benutze dies in meinen Projekten: http://phpjs.org/functions/var_dump:604 – Hafiz