【问题标题】:Javascript reflection - generic toStringJavascript 反射 - 通用 toString
【发布时间】:2012-01-28 04:00:01
【问题描述】:

现在当我将自己的对象放入警报功能时,我看到了

[对象对象]

这是毫无意义的信息。有没有办法使用反射来获取这些字段的所有字段和值?

【问题讨论】:

    标签: javascript reflection


    【解决方案1】:

    JSON.stringify 通常是内置的,可以序列化您传递给它的大多数对象。

    也就是说,您可能应该只使用调试器或 console.log 而不是警报。

    【讨论】:

    • 请注意,并非所有浏览器都支持此功能。这只能用于if(JSON.stringify)。所以为了避免抛出错误。当然,如果是临时代码,你不需要添加这个逻辑,但是如果代码会持续到生产中,你可能会想要它,以避免在 IE 或旧 FF 等上出现意外故障。你不妨考虑使用console 对象来获取您想要的信息。但同样,只有if(window.console)
    【解决方案2】:

    这是其中之一。但最好使用console.log() 然后alert

    function objectToString(o){
        var parse = function(_o){
            var a = [], t;
            for(var p in _o){
                if(_o.hasOwnProperty(p)){
                    t = _o[p];
                    if(t && typeof t == "object"){
                        a[a.length]= p + ":{ " + arguments.callee(t).join(", ") + "}";
                    }
                    else {
                        if(typeof t == "string"){
                            a[a.length] = [ p+ ": \"" + t.toString() + "\"" ];
                        }
                        else{
                            a[a.length] = [ p+ ": " + t.toString()];
                        }
                    }
                }
            }
            return a;
        }
        return "{" + parse(o).join(", ") + "}";
    }
    

    【讨论】:

      【解决方案3】:

      当然,也许是这样的

      function alertObject(0){
          var str = "";
          for(i in o)
              str += i + " " + o[i] + "\n";
          alert(str);
      }
      

      Edit :: 注意这只是一个愚蠢的小例子。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-07
        • 2010-09-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多