对象转储JavaScript

Jes*_*ule 88 javascript

是否有第三方加载项/应用程序或某种方式在脚本调试器中为JavaScript对象执行对象映射转储?

这是情况......我有一个方法被调用两次,并且每次都有不同的东西.我不确定有什么不同,但事情是.所以,如果我可以将窗口的所有属性(或者至少是window.document)转储到文本编辑器中,我可以用简单的文件差异来比较两个调用之间的状态.思考?

Tim*_*Tim 129

console.log("my object: %o", myObj)
Run Code Online (Sandbox Code Playgroud)

否则你最终会得到一个字符串表示,有时会显示:

[object Object]
Run Code Online (Sandbox Code Playgroud)

或者其他一些.

  • 只为Chrome和Firefox打印[object Object].<耸肩> (3认同)
  • 在Meteor(服务器端)中,它打印`my object:%o`.不是很有帮助:) (2认同)

Dar*_*rov 61

萤火虫 +console.log(myObjectInstance)

  • 任何支持主流浏览器的开发者.如果问题仅存在于IE中,则只能在IE中进行测试,因此您必须使用浏览器. (8认同)
  • ...然后查看*Firebug控制台*而不是标准的*Javascript控制台*.:-) (4认同)
  • @SteveRobbins,谁现在使用IE开发Web应用程序?就个人而言,我目前为Internet Explorer找到的唯一用途是在重新安装Windows操作系统后下载真正的Web浏览器.顺便说一句,这是我唯一一次推出这种软件的和平. (4认同)
  • 如果您的错误仅存在于其他浏览器中,该怎么办? (3认同)
  • IE有一个控制台,但是记录一个对象会返回`[object Object]`.不是很有用 (3认同)
  • 并且,如果您使用的是node.js和终端。。没有萤火虫? (2认同)

zho*_*shu 45

function mydump(arr,level) {
    var dumped_text = "";
    if(!level) level = 0;

    var level_padding = "";
    for(var j=0;j<level+1;j++) level_padding += "    ";

    if(typeof(arr) == 'object') {  
        for(var item in arr) {
            var value = arr[item];

            if(typeof(value) == 'object') { 
                dumped_text += level_padding + "'" + item + "' ...\n";
                dumped_text += mydump(value,level+1);
            } else {
                dumped_text += level_padding + "'" + item + "' => \"" + value + "\"\n";
            }
        }
    } else { 
        dumped_text = "===>"+arr+"<===("+typeof(arr)+")";
    }
    return dumped_text;
}
Run Code Online (Sandbox Code Playgroud)

  • 复制并粘贴:http://binnyva.blogspot.com/2005/10/dump-function-javascript-equivalent-of.html (7认同)
  • 通过更改函数名更新代码,如在递归调用中,将其定义为"mydump"时称为"dump" (4认同)
  • 当用于检查 jquery 对象时,这会以“过多的递归”杀死 Chrome 和 Firefox (2认同)

Chr*_* HG 41

如果您使用的是Chrome,Firefox或IE10 +,为什么不扩展控制台并使用

(function() {
    console.dump = function(object) {
        if (window.JSON && window.JSON.stringify)
            console.log(JSON.stringify(object));
        else
            console.log(object);
    };
})();
Run Code Online (Sandbox Code Playgroud)

一个简洁的跨浏览器解决方案.

  • JSON.stringify无法序列化循环结构.它不适用于所有对象. (3认同)

mon*_*oid 24

只需使用:

console.dir(object);
Run Code Online (Sandbox Code Playgroud)

你会得到一个很好的可点击对象表示.适用于Chrome和Firefox


kaz*_*vac 12

适用于Chrome/Chromium

console.log(myObj)
Run Code Online (Sandbox Code Playgroud)

或者相当于

console.debug(myObj)
Run Code Online (Sandbox Code Playgroud)


Ari*_*ris 7

为了提高可读性,可以将对象转换为json字符串,如下所示:

console.log(obj, JSON.stringify(obj));
Run Code Online (Sandbox Code Playgroud)

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify


Seb*_*ian 5

Usingconsole.log(object)会将您的对象扔到 Javascript 控制台,但这并不总是您想要的。使用JSON.stringify(object)将返回要存储在变量中的大部分内容,例如将其发送到 textarea 输入并将内容提交回服务器。