对象转储JavaScript

对象转储JavaScript,javascript,Javascript,是否有第三方附加组件/应用程序或某种方式在JavaScript对象的脚本调试器中执行对象映射转储 情况是这样的。。。我有一个方法被调用了两次,每次调用的过程都不一样。我不知道有什么不同,但有些不同。因此,如果我可以将window的所有属性(或至少window.document)转储到文本编辑器中,我就可以用一个简单的文件diff.thinks?+console.log(myObjectInstance)函数mydump(arr,level)来比较这两个调用之间的状态{ var_text=“”;

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

情况是这样的。。。我有一个方法被调用了两次,每次调用的过程都不一样。我不知道有什么不同,但有些不同。因此,如果我可以将window的所有属性(或至少window.document)转储到文本编辑器中,我就可以用一个简单的文件diff.thinks?

+
console.log(myObjectInstance)

函数mydump(arr,level)来比较这两个调用之间的状态{
var_text=“”;
如果(!level)level=0;
var级别_=”;
对于铬/铬(var j=0;j

console.log(myObj)
或者它是等效的

console.debug(myObj)
否则,最终会出现字符串表示,有时会显示:

[object Object]
或者类似的东西。

只需使用:

console.dir(object);

您将获得一个很好的可点击对象表示。适用于Chrome和Firefox

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

(function() {
    console.dump = function(object) {
        if (window.JSON && window.JSON.stringify)
            console.log(JSON.stringify(object));
        else
            console.log(object);
    };
})();

要获得简洁的跨浏览器解决方案。

在Chrome中,单击3点,然后单击“更多工具”,然后单击“开发人员”。在控制台上,键入console.dir(您的对象)。

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

为了更好地可读性,您可以将对象转换为json字符串,如下所示:

console.log(obj, JSON.stringify(obj));


通过更改函数名来更新代码,就像在递归调用中一样,它在定义其“mydump”复制和粘贴时间时被称为“dump”:这在用于检查jquery时会导致Chrome和Firefox“递归过多”object@slashdottir通过检查
if(level>10)返回level_padding+'>';
“太多递归”是由于循环引用而发生的(当一个对象的子参数引用其父对象时)。可以通过记住当前值的所有父对象来解决,如果当前值与父对象的某个匹配,请停止进一步挖掘…然后查看Firebug控制台,而不是标准Javascript控制台。:-)IE有一个控制台,但记录一个对象会返回
[对象]
。不太好useful@SteveRobbins,现在谁使用IE开发web应用程序?就我个人而言,到目前为止,我发现Internet Explorer的唯一用途是在我重新安装Windows操作系统后下载一个真正的web浏览器。顺便说一下,这是我唯一一次启动这种平和的软件。任何支持主要浏览器的开发人员。如果问题只存在于IE中,它只能在IE中测试,所以你必须使用浏览器。如果你使用的是node.js和终端。没有firebug??我喜欢这个。特别是对于不支持对象转储的浏览器。也许可以将“else console.log(object);”替换为调用上述自定义遍历函数?…)@C.BFirefox和Chrome.JSON.stringify无法序列化循环结构。它不会对所有对象都起作用。Chrome和Firefox提供[object object object],您可以在控制台(点击F12)中使用
Console.dir({bar:“foo”})对其进行测试
您的对象是否覆盖了toString方法?似乎至少在控制台中工作。可能是我的用户。谢谢您这么好的功能您先生是一个英雄这到底是怎么回事?幸运的是,这是在我4年前的生日上回答的,当时我没有在Meteor(服务器端)中使用js它在Node.js中打印
我的对象:%o
。没有太大帮助:)这只是在输出中打印一个文本
“%o”
。但是,仅仅将字符串从对象中分离出来,就可以根据需要转储一个人类可读的对象。有趣的是,这是如何演变而来的。现在
console.log(“my”,myObj)
只是假装
%o
存在于Chrome、Firefox、Opera、IE11、Edge中。可能重复的是这真的很有帮助
(function() {
    console.dump = function(object) {
        if (window.JSON && window.JSON.stringify)
            console.log(JSON.stringify(object));
        else
            console.log(object);
    };
})();
console.log(obj, JSON.stringify(obj));