JQuery快速转储对象成员

9

我想知道是否有一种快速的方法可以获取一个对象的所有变量值,类似于php的var_dump()方法。

如果我有一个对象

var myObject = {
    Up: 38,
    Dn: 40,
    Lf: 37,
    Rt: 39,
    Enter: 13,
    Space: 32,
    Esc: 27
};

我会得到的字符串大致如下:
[ Up:38, Dn:40, Lf:37, Rt:39, Enter:13, Space:32, Esc:27 ]

假设我需要在无法使用Firebug的计算机上执行此操作。是否有一种方法可以在不迭代对象中的所有参数的情况下执行此操作?是否有一个独立的库具有类似于此的功能?


@FelixKling 不是一个 JSON 对象,它仍然会工作吗? - Hans Z
2
@Hans。不存在JSON对象这样的东西。 - gdoron
1
JSON.stringify 将数组和对象转换为 JSON。没有多余的,也没有少的。关于 gdoron 的评论,请查看 http://benalman.com/news/2010/03/theres-no-such-thing-as-a-json/。 - Felix Kling
可能是Is there an equivalent for var_dump (PHP) in Javascript?的重复问题--提供了一些可能性列表(也是我的建议)。 - Felix Kling
嗯,JSON.stringify似乎可以用于没有句柄/不具有对jQuery选定元素的句柄的对象。 - Hans Z
显示剩余3条评论
5个回答

9
作为一个快速的一行代码,我经常使用。
   var o = {a:1, b:2}, k, s = []; for (k in o) o.hasOwnProperty(k) && s.push (o[k]); s = s.join (', ');

您只需要更改对象中的一个出现次数(即o的值),结果将存储在s中。

此操作不会进入数据结构。如果需要此功能,则JSON.stringify可能更适合。请注意,JSON.stringify不处理函数,它只是跳过它们!

要进行格式化的字符串化,请使用

JSON.stringify({a:1,b:2,c:{d:1,e:[1,2]}}, null, 4); // Indented 4 spaces

根据这个JavaScript:如何从对象直接生成格式化易读的JSON?的答案:


5

使用IE,Chrome和Firefox默认的开发工具

console.dir(myObject); 

如果你真的无法使用这些工具,那么JSON.stringify(myObject)或许可以帮到你。


1
假设我需要在无法使用Firebug的计算机上执行此操作。 - j08691
不能使用任何开发工具吗?看看JSON.stringify。 - Ryan
没错,在IE控制台中,console.dir会输出对象的所有信息,但console.log不会。在Chrome中,console.log正常工作。我会编辑答案以包含这一点。 - Ryan

2
你尝试过FirebugLite吗?它有很多Firebug的功能。
这是一个JavaScript Firebug库,你只需要加载脚本即可。
<script type="text/javascript" src="https://getfirebug.com/firebug-lite.js"></script>

您将在所有主要浏览器中获得Firebug控制台,包括Internet Explorer


我完全无法使用Firebug,因为我没有可以安装东西的计算机,所以我只能在IE上进行开发。 - Hans Z
@Hans FirebugLite是一个Javascript库,请查看我的链接。 - Slawek
请不要仅发布链接作为答案,如果链接失效则毫无用处。 - gdoron
值得一提的是,IE有一套可用的开发者工具,其中包括一个控制台。因此,console.log可以用于此操作...无需安装任何东西。 - bpeterson76

1

JSON.stringify 是一个不错的选择,它可以在所有浏览器上运行,只需包含库即可:

https://github.com/douglascrockford/JSON-js/blob/master/json2.js

例子:

        text = JSON.stringify(['e', {pluribus: 'unum'}]);
        // text is '["e",{"pluribus":"unum"}]'


        text = JSON.stringify(['e', {pluribus: 'unum'}], null, '\t');
        // text is '[\n\t"e",\n\t{\n\t\t"pluribus": "unum"\n\t}\n]'

        text = JSON.stringify([new Date()], function (key, value) {
            return this[key] instanceof Date ?
                'Date(' + this[key] + ')' : value;
        });
        // text is '["Date(---current time---)"]'

0
function var_dump(obj) {
    var obj_members = "";
    var sep = "";
    for (var key in obj) {
        obj_members += sep + key + ":" + obj[key];
        sep = ", ";
    }
    return ("[" + obj_members + "]");
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接