原来代码入如下:
- 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成立。