js遍历属性,返回字符串

拿到别人的代码,一个对象属性值非常复杂,但是在某些情况下有没有调试工具,如何办?如何查看对象的所有属性?一下代码可以解决这个问题

function WalkP(obj,showString){
if(!WalkP.isArray(obj)){
var str = "{\n";
for(var o in obj){
var value = "'"+(typeof obj[o]).toUpperCase()+"'";
if(WalkP.isArray(obj[o])){//濡傛灉涓烘暟缁?
value = "'Array'";
}

if(typeof obj[o] == "object"){

value = WalkP(obj[o],showString);

}else if(typeof obj[o] == "string"||typeof obj[o]=="number"||typeof obj[o]=="boolean"){
value = "'"+ WalkP.html.encode(obj[o].toString()) +"'";
}
str+="'"+o+"':"+value+",\n";

}
str = str.replace(/,\n$/,"");
str+="\n}"
return str;
}else{
var str="[";
for(var i=0;i<obj.length;i++){
var type = typeof obj[i];
if(type == "object"){
str+=WalkP(obj[i],showString)+",";
}else if(typeof obj[i] == "string"||typeof obj[i]=="number"||typeof obj[i]=="boolean"){
str+="'"+ WalkP.html.encode(obj[i].toString()) +"',";
}else{
str += "'"+(typeof obj[i]).toUpperCase()+"',";
}
}
str = str.replace(/,$/,"");
str+="]";
return str;
}
}
WalkP.html={
encode:function(str){
var s = "";
if(str.length == 0) return "";
s = str.replace(/&/g, "&amp;")
.replace(/</g, "&lt;")
.replace(/>/g, "&gt;")
.replace(/ /g, "&nbsp; ")
.replace(/'/g,"&apos;")
.replace(/"/g, "&quot;");
return s;
},

decode:function(str){
var s = "";
if(str.length == 0) return "";
s = str.replace(/&amp;/g,"&")
.replace(/&lt;/g,"<")
.replace(/&gt;/g,">")
.replace(/&nbsp;/g," ")
.replace(/&apos;/g,"'")
.replace(/&quot;/g,"\"");
return s;
}
}
WalkP.isArray=function(o) {
return Object.prototype.toString.call(o) === '[object Array]';
}



posted on 2012-04-01 16:06  kxdhm  阅读(662)  评论(0编辑  收藏  举报