读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。
?