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

ChenReal

昨天整理代码的时候发现之前自己写过一个这样的js代码,挺实用的,而且经常用!
在这里介绍一下吧

对于某个对象,某个参数不熟悉不了解或者需要调试的话,php里头大家都管用print_r把参数展开,便可一目了然了。这个函数移植到javascript同样地意义重大,因为javascript的调试比php更加麻烦,故此,在js上它也是个非常好的调试分析工具。

代码如下:
<div class="quote">function print_r(o,re){
    var res = "";
    for(var name in o){
        if(o[name]){
            var val = o[name];
            switch(typeof(val)){
                case "string" :
                    val = val.replace(/</g,"&lt;").replace(/>/g,"&gt;")
                    break;
                case "function":
                    val = "function(){...}";
                    break;               
            }   
            res+=name+" => "+val+"\n";   
        }
    }
    res = "<pre>"+res+"</pre>"
    if(re) return res;
    var oSpan = document.getElementById("span_print_r");
    if(!oSpan){
        oSpan = document.createElement("span");       
        oSpan.id="span_print_r";
        document.body.insertBefore(oSpan,document.body.childNodes[0]);
    }
    oSpan.innerHTML = res;                             
}

当然如果要把子对象展现出来的话,可以用递归。不过对于DOM对象的分析,最好别用递归,不然容易陷入死循环。不能贪心,还是一个个来吧~