本站原创文章,转载请注明: 转载自zrong's Blog,原文 trace2 in FMS,欢迎使用文章源码进行转载。
本站转载文章会标明[转],转载请注明原始作者文章地址。
基于fczone改写的framework.asc(详见让FMS中的trace支持Object),我稍作修改,加入了对Array和Object的判断,做成了这个trace2()函数,使用前只需先load(“trace2.acs”)即可,不需要载入framework.asc了:
8月13日更新:解决了不处理Object的问题
?Download trace2.asc
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 | function trace2(data){ if(typeof(data) == "object"){ if(data instanceof Stream || data instanceof File || data instanceof LoadVars || data instanceof XML || data instanceof XMLSocket || data == application) { // trace(data.toString()); }else if(data instanceof SharedObject){ var dat = new Object(); // trace("[object SharedObject name="+data.name+"]"); // var props = data.getPropertyNames(); for(var i in props) { if(props[i]){ var o = data.getProperty(props[i]); trace("\t"+props[i]+" = " + objString(o)); } } // }else{ trace(objString(data)); } }else{ trace(data.toString()); } } /*將內容對象轉換成字符串 * @param data 要被轉換的對象 * @param ignore 需要跳過的屬性 */ function objString(data, ignore){ var msg; if(typeof(data) == "object"){ if(data instanceof Array){ msg = objectString(data, ignore, "Array"); }else if(data instanceof Object){ msg = objectString(data, ignore, "Object"); }else if(data instanceof Client){ msg = "[object Client ip=" + data.ip + " uri="+data.uri+" args=" + objString(data.__ARGUMENTS__, data)+"]"; }else if(data instanceof NetConnection){ msg = "[object NetConnection connected=" + data.isConnected + " uri="+data.uri+"]"; }else{ msg = data; } }else{ msg = data.toString(); } // return msg; } /* 將參數中的對象轉換成字符串。此函數與objString的區別是,objString轉換所有的對象類型,而objectString僅轉換Object對象類型 * @param data 要被轉換的對象 */ function objectString(data, ignore, type){ /*由于Remoting返回的實際上是關聯數組而非對象,因此這些“對象”其實屬于Array類型 这样就给判断真正的类型造成了难度。因为联合数组实际上是没有length属性的,必须用for in循环来获取其中的值 通过判断length是否存在,是用不同的循环获取 */ if(type == "Array"){ if(data.length){ var msg = "["; for(var i=0; i<data.length;> if(data[i] == ignore){ continue; } msg += objString(data[i]); if(i != data.length - 1){ msg += ", "; } } msg += "]"; return msg; }else{ //如果是关联数组,就把它变成一个真正的对象,并调用对象处理程序 var o = new Object(); for(var i in data){ o[i] = data[i]; } return objectString(o, null, "Object"); } }else if(type == "Object"){ //如果是真正的Object var msg = "{"; for(var i in data){ if(data[i] == ignore){ continue; } msg += i + ":" + objString(data[i]); msg += ", "; } msg = msg.slice(0, -2); //去掉最后的一个逗号和一个空格 msg += "}"; return msg; } } |


最新评论