在很多情况下,在调试代码的时候都需要对一个很复杂的数组或者对象进行分析,这样就需要trace出字符串,方便我们进行查错.
以下的类适用于
数字型或者字符串型的数组或对象相互嵌套
以下的类适用于
数字型或者字符串型的数组或对象相互嵌套
/*
* TraceObject CLASS
*
* @ CREATED BY: ycccc8202
* @ PURPOSE: 打印对象字符串
* @ DATE:2007.6.22
* Usage example:
* import com.ycccc.utils.TraceObject;
* var a = [[1, 2, 3], {i:1, j:2}, [{m:3, n:"4"}, 5], "6", {j:["7", 8], k:{p:9, q:"10"}}];
* var b = {i:8, j:{o:1, p:2}, k:[3, 4], l:{r:"4", s:["5", 6]}, m:"7"};
* var c = [1, 2, 3];
* var d = {i:1, j:2, k:3};
* trace(TraceObject.toString(a));
* trace(TraceObject.toString(b));
* trace(TraceObject.toString(c));
* trace(TraceObject.toString(d));
*/
class com.ycccc.utils.TraceObject {
/**
* Private Static members
*/
private static var RESULT_STRING = "";
/**
* Public Static methods
*/
public static function toString(obj:Object) {
RESULT_STRING = ObjToString(obj).substr(0, -1);
return RESULT_STRING;
}
/**
* Private Static methods
*/
private static function ObjToString(obj:Object):String {
var resultStr:String = "";
var type:Object = typeof obj;
switch (type) {
case "number" :
return obj+",";
case "string" :
return "\""+obj+"\",";
case "object" :
if (obj.length<>undefined) {
if (obj.length == 0) {
return "[],";
}
resultStr += "[";
for (var _i:Number = 0; _i<obj.length; _i++) {
resultStr += ObjToString(obj[_i]);
}
resultStr = resultStr.substr(0, -1);
resultStr += "],";
} else {
var _null = false;
resultStr += "{";
for (var _i in obj) {
_null = true;
resultStr += _i+":"+ObjToString(obj[_i]);
}
if (!_null) {
return "{},";
}
resultStr = resultStr.substr(0, -1);
resultStr += "},";
}
return resultStr;
}
}
}
//用法:
import com.ycccc.utils.TraceObject;
var a = [[1, 2, 3], {i:1, j:2}, [{m:3, n:"4"}, 5], "6", {j:["7", 8], k:{p:9, q:"10"}}];
var b = {i:8, j:{o:1, p:2}, k:[3, 4], l:{r:"4", s:["5", 6]}, m:"7"};
var c = [1, 2, 3];
var d = {i:1, j:2, k:3};
trace(TraceObject.toString(a));
trace(TraceObject.toString(b));
trace(TraceObject.toString(c));
trace(TraceObject.toString(d));
//p.s:希望对大家有些帮助 v(-_-)v
回复Comments
{commenttime}{commentauthor}
{CommentUrl}
{commentcontent}