7

我想知道是否有一种快速的方法来获取对象的所有变量值,类似于 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 的计算机上执行此操作。有没有办法在不遍历对象中的所有参数的情况下做到这一点?有没有这样的独立库?

4

5 回答 5

7

作为一种快速的衬里,我经常使用

   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?

于 2012-06-13T21:22:25.153 回答
5

使用默认开发。IE、Chrome 和 Firefox 上的工具

console.dir(myObject); 

如果您真的不能使用这些工具,那么可能会有JSON.stringify(myObject)帮助。

于 2012-06-13T21:07:39.850 回答
2

你试过FirebugLite吗?它有很多 Firebug 功能。

这是 Javascript Firebug 库,您只需要加载脚本

<script type="text/javascript" src="https://getfirebug.com/firebug-lite.js"></script>

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

于 2012-06-13T21:07:30.957 回答
1

JSON.stringify是要走的路,但它适用于所有浏览器,只需包含 lib:

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---)"]'
于 2012-06-13T21:13:11.990 回答
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 + "]");
}
于 2012-06-13T21:09:03.410 回答