dojo的帮助文档(是越来越差了,不打算让人用了?)里并没有讲toJson究竟对哪些类型可用。做了一个小测试:
function f(a, b){ console.log(); } console.log("dojo.toJson(f) outputs:") console.log(dojo.toJson(f)); console.log("\ndojo.toJson(f.toString() outputs:"); console.log(dojo.toJson(f.toString())); console.log("\ndojo.toJson(date) outputs:"); console.log(dojo.toJson(new Date())); console.log("\ndojo.toJson(array) outputs:"); console.log(dojo.toJson([1,2,3])); console.log("\ndojo.toJson(object) outputs:"); console.log(dojo.toJson({key:value})); console.log("\ndojo.toJson(html markup) outputs:"); console.log(dojo.toJson(""));输出结果是:
dojo.toJson(f) outputs: undefined dojo.toJson(f.toString() outputs: "function f(a, b) {\n console.log();\n}" dojo.toJson(date) outputs: "2012-02-17T13:19:50.895Z" dojo.toJson(array) outputs: [1,2,3] dojo.toJson(object) outputs: {} dojo.toJson(html markup) outputs: log: ""
喜欢这篇文章?阳光宝盒就是使用DOJO开发的,去看看吧。
这里的结果中,需要注意的是,对Date类型,有时候dojo.toJson会出错,从而使得返回为空集合{}。似乎在IE下更常见。看下面的例子:
var a = { lastTime : new Date() }; dojo.toJson(a);
在FF里和IE的控制台里,两者得到不同的结果,在IE下会是:
"{"lastTime":{}}"