[原创]javascript模拟PHP的print_r函数

ChenReal

昨天整理代码的时候发现之前自己写过一个这样的js代码,挺实用的,而且经常用!<br/>在这里介绍一下吧<br/><br/>对于某个对象,某个参数不熟悉不了解或者需要调试的话,php里头大家都管用print_r把参数展开,便可一目了然了。这个函数移植到javascript同样地意义重大,因为javascript的调试比php更加麻烦,故此,在js上它也是个非常好的调试分析工具。<br/><br/>代码如下:<br/><div class="quote">function print_r(o,re){<br/>    var res = "";<br/>    for(var name in o){<br/>        if(o[name]){<br/>            var val = o[name];<br/>            switch(typeof(val)){<br/>                case "string" :<br/>                    val = val.replace(/</g,"&lt;").replace(/>/g,"&gt;")<br/>                    break;<br/>                case "function":<br/>                    val = "function(){...}";<br/>                    break;                <br/>            }    <br/>            res+=name+" => "+val+"\n";    <br/>        }<br/>    }<br/>    res = "<pre>"+res+"</pre>"<br/>    if(re) return res;<br/>    var oSpan = document.getElementById("span_print_r");<br/>    if(!oSpan){<br/>        oSpan = document.createElement("span");        <br/>        oSpan.id="span_print_r";<br/>        document.body.insertBefore(oSpan,document.body.childNodes[0]);<br/>    }<br/>    oSpan.innerHTML = res;                              <br/>}</div>当然如果要把子对象展现出来的话,可以用递归。不过对于DOM对象的分析,最好别用递归,不然容易陷入死循环。不能贪心,还是一个个来吧~