日期:2014-05-16  浏览次数:20385 次

[Array转Json]试了好使, 但是没弄明白
原来代码入如下:
JScript code

function arrayToJson(o) { 
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 + ":" + arrayToJson(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(arrayToJson(o[i])); 
} 
r = "[" + r.join() + "]"; 
} 
return r; 
} 
return o.toString(); 
}




1. if (!o.sort) 这个sort是干啥的?
2. if (!!document.all && !/^/n?function/s*toString/(/)/s*/{/n?/s*/[native code/]/n?/s*/}/n?/s*$/.test(o.toString)) 
这两个If 求解释

------解决方案--------------------
也难为你,这段代码写的可读性确实不好。
另外那个//之间的/应该是\吧

1、判断是否是数组的,如果否 if成立
2、判断IE[一种hack] 并且o的toString方法不是原生方法的。如果确定 则if成立。