0
点赞
收藏
分享

微信扫一扫

打印js对象


输出JavaScript对象的内部结构常常做调试用.

一个输出所有对象属性的例子如下:
Javascript代码

function dump_obj(myObject) { 

 var s = ""; 

 for (var property in myObject) { 

 s = s + "\n "+property +": " + myObject[property] ; 

 } 

 alert(s); 

}




以上代码有些简陋,看个完善些的
Javascript代码

<script language="javascript"> 

var MAX_DUMP_DEPTH = 10; 

function dumpObj(obj, name, indent, depth) { 

 if (depth > MAX_DUMP_DEPTH) { 

 return indent + name + ": <Maximum Depth Reached>\n"; 

 } 

 if (typeof obj == "object") { 

 var child = null; 

 var output = indent + name + "\n"; 

 indent += "\t"; 

 for (var item in obj) { 

 try { 

 child = obj[item]; 

 } catch (e) { 

 child = "<Unable to Evaluate>"; 

 } 

 if (typeof child == "object") { 

 output += dumpObj(child, item, indent, depth + 1); 

 } else { 

 output += indent + item + ": " + child + "\n"; 

 } 

 } 

 return output; 

 } else { 

 return obj; 

 } 

} 

</script> 



/** 

 * 对象转json 

 * @param {Object} obj 

 */ 

this.obj2Str=function(o){ 


 if (o == undefined) { 

 return ""; 

 } 

 var r = []; 

 if (typeof o == "string") return "\"" + o.replace(/([\"\\])/g, "\\$1").replace(/(\n)/g, "\\n").replace(/(\r)/g, "\\r").replace(/(\t)/g, "\\t") + "\""; 

 if (typeof o == "object") { 

 if (!o.sort) { 

 for (var i in o) 

 //r.push("\"" + i + "\":" + this.obj2Str(o[i])); 

 if (!!document.all && !/^\n?function\s*toString\(\)\s*\{\n?\s*\[native code\]\n?\s*\}\n?\s*$/.test(o.toString)) { 

 r.push("toString:" + o.toString.toString()); 

 } 

 r = "{" + r.join() + "}" 

 } else { 

 for (var i = 0; i < o.length; i++) 

 //r.push(this.obj2Str(o[i])) 

 r = "[" + r.join() + "]"; 

 } 

 return r; 

 } 

 return o.toString().replace(/\"\:/g, '":""'); 

} 



/** 

 * 打印js的对象 

 * obj 对象 

 * name 名称 

 * indent 缩减 

 * depth 深度 

 */ 

this.dumpObj=function(obj, name, indent, depth) { 

 var MAX_DUMP_DEPTH = 3; 

 if (depth > MAX_DUMP_DEPTH) { 

 return indent + name + ": <Maximum Depth Reached>\n"; 

 } 

 if (typeof obj == "object") { 

 var child = null; 

 var output = indent + name + "\n"; 

 indent += "\t"; 

 for (var item in obj) { 

 try { 

 child = obj[item]; 

 } catch (e) { 

 child = "<Unable to Evaluate>"; 

 } 

 if (typeof child == "object") { 

 output += this.dumpObj(child, item, indent, depth + 1); 

 } else { 

 output += indent + item + ": " + child + "\n"; 

 } 

 } 

 return output; 

 } else { 

 return obj; 

 } 

}

举报

相关推荐

0 条评论