您的位置:首页 > 移动开发 > Objective-C

[Javascript] A function works like 'print_r()' in PHP to print out the details of an object for JS debugging

2009-07-19 15:57 1221 查看
/*********************************************************************************
*
*  Description :  Functions for Input/Output
*  Copyright   :  Copyright(c) 2009
*  Company     :  Be Technology Inc.
*
*  @author Moky
*  @version 1.0 2009-03-28
*
*********************************************************************************/
/**
*  Output all attributes of the object
*
*  @created by moky, 2009-03-28
*/
function print_r(obj) {
//document.write(sprint_r(obj));
document.write(obj2xml(obj));
}

//-------------------------------------
/**
*
*  @created by moky, 2009-11-10
*/
function obj2xml(obj, level) {
if (!level) level = 0;
var brln = '<br/>/r/n';
var tab = '';
for (var x = 0; x < level; x++) tab += '    ';
var ret = '';
//object, string, number, boolean, null, undefined
if (typeof(obj) == 'object') {
for (var k in obj) {
var son = obj[k];
ret += tab;
if (isNaN(k)) {
ret += '<' + k + ' type="' + typeof(son) + '">';
ret += obj2xml(son, level+1);
ret += '</' + k + '>';
} else {
ret += '<<b>arrayItem</b> index="' + k + '" type="' + typeof(son) + '">';
ret += brln;
ret += obj2xml(son, level+1);
ret += '</<b>arrayItem</b>>';
}
ret += brln;
}
} else if (typeof(obj) == 'string') {
ret = '<![CDATA[' + obj + ']]>';
} else {
ret = obj;
}
return ret;
}

/**
*
*  @created by moky, 2009-03-28
*/
function sprint_r(obj, level) {
var ret = '';
if (!obj) {
return ret;
}
var S = 0;
if (!level) level = S;
if (level <= S) {
ret += '<pre style="border:1px solid #e0e0f5; padding:8px 5px; background-color:#fffff0; color:#7777aa; text-align:left; " mce_style="border:1px solid #e0e0f5; padding:8px 5px; background-color:#fffff0; color:#7777aa; text-align:left; ">';
}
if (!obj) {
ret += 'null';
ret += '/r/n';
return ret;
}
switch (typeof(obj)) {
//"number", "string", "boolean", "object", "function" and "undefined"
case 'number' :
case 'boolean' :
case 'undefined' :
ret += obj;
break;
case 'string' :
ret += '"' + obj + '"';
break;
case 'function' :
ret += '[function]';
break;
case 'object' :
if (Object.prototype.toString.call(obj) === '[object Array]') {
ret += '[';
} else {
ret += '{';
}
ret += '/r/n';
var bl = false;
for (var name in obj) {
if (bl) {
ret += ',/n';
} else {
bl = true;
}
ret += sprint_r_indent(level + 1);
if (isNaN(name)) {
ret += name + ':';
}
var value = obj[name];
sprint_r(value, level + 1);
}
ret += '/r/n';
ret += sprint_r_indent(level);
if (Object.prototype.toString.call(obj) === '[object Array]') {
ret += ']';
} else {
ret += '}';
}
break;
default :
ret += 'unknown value: [' + value + ']';
}
if (level <= S) {
ret += '</pre>';
}
return ret;
}
/**
*
*  @created by moky, 2009-03-28
*/
function sprint_r_indent(level, s) {
var ret = '';
for (var i = 0; i < level; i++) {
ret += '<font color="#f7f7f7">__</font>';
}
if (s) {
ret += s;
}
return ret;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐