读书人

读Ext之10(解析JSON)

发布时间: 2012-11-10 10:48:50 作者: rapoo

读Ext之十(解析JSON)

首先,回到第一篇。使用Ext.apply为Ext对象添加了一些属性,

?

?

doDecode 函数将字符转成JS对象,这里采用eval方式,当然还可以使用new Function。

?

?

别忘了eval中两旁的小括号,否则会有意想不到的bug。为何加小括号见:javascript中大括号“{}”的多义性


doEncode 函数将JS对象转换成符合JSON规范的字符串,这个函数比较复杂。先对基本类型和数组,日期进行转换,最后是对JS对象的处理。

?

doEncode中对字符串的转换用到了encodeString及encodeArray函数。

最后是三个挂在this上的方法,以this.decode示例

?

this.decode = function() {    var dc;    return function(json) {        if (!dc) {            // setup decoding function on first access            dc = isNative() ? JSON.parse : doDecode;        }        return dc(json);    };}();
?

?

dc = isNative() ? JSON.parse : doDecode 可以看到如果isNative()返回true则使用浏览器原始的JSON.parse,否则使用doDecode。

?

读书人网 >JavaScript

热点推荐