【问题标题】:In Chrome JS debugger, how do I print all the properties of an object?在 Chrome JS 调试器中,如何打印对象的所有属性?
【发布时间】:2009-07-06 16:23:14
【问题描述】:

我在 Chrome 中打开了 Javascript 调试器 (Ctrl+Shift+L) 并开始使用它在我的代码中设置断点。

与 Firebug 相比,这是一个非常不同的界面,(它都是命令行驱动的)所以我想知道如何做一个简单的事情,比如打印一个对象的所有属性。

如果我有这样的对象:

var opts = {
  prop1: "<some><string/></some>",
  prop2: 2,
  prop3: [1,2,3]
}

我可以设置断点并检查对象,但我似乎只取回了一个属性,而且我不确定会出现哪个属性:

$ print opts
#<an Object>

尝试获取所有属性:

$ print for(var p in opts) p;
prop1

有什么想法吗? 它显然不止一个...

【问题讨论】:

    标签: javascript debugging google-chrome


    【解决方案1】:

    Chrome 有 ECMA 风格的原生 JSON,所以你可以使用

    JSON.stringify (opts);
    {"prop1":"<some><string/></some>","prop2":2,"prop3":[1,2,3]}
    

    【讨论】:

    • 这很高兴知道,但它似乎在调试器中不起作用。 (参考错误:未定义 JSON)
    【解决方案2】:

    您只需在 Chrome 调试器命令行中输入对象名称即可获得可浏览的列表。就我而言,我想要所有可以剪切/粘贴到外部文档的属性和方法。这对我有用:

    for (a in opts) console.log(typeof (opts[a]) + ' :: ' + a);
    

    返回:

    string :: id
    string :: name
    number :: selectMode
    string :: url
    boolean :: multi
    object :: selectedRows
    object :: selectedValues
    function :: Load
    function :: _LoadInternal
    function :: _CreatePostElements
    ...etc...
    

    【讨论】:

      【解决方案3】:

      尝试使用检查器底部 JavaScript 控制台中的命令行 (Ctrl+Shift+J)。它有一种更像 Firebug 的感觉。

      【讨论】:

      • 如何使用 Inspector 设置断点?我的问题是我想暂停执行并检查对象的值。
      【解决方案4】:

      所以我尝试使用“dir”命令,它至少给了我一些东西:

      $dir opts 
      3 properties  
      prop1: string (#11#) 
      prop2: string (#12#)  
      prop3: string (#13#)
      

      这也有效(稍微好一点,因为它给了我一些值),但如果字符串太长,则切断字符串的结尾:

      $ print var s=[];for(var p in opts) { s.push(p + ":" + opts[p]); } s.join(",");
      prop1:<some><string/></some>,prop2:2,prop3:[object Object]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-03-03
        • 2019-01-31
        • 1970-01-01
        • 2018-12-28
        • 1970-01-01
        • 2013-07-11
        • 2018-06-28
        • 2010-10-25
        相关资源
        最近更新 更多