首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

Extjs源码之- Ext.util.JSON

2012-09-02 
Extjs源码之-- Ext.util.JSON很多写extjs的朋友说,Extjs的源码之间的关系太紧了,所以不能像其他很多框架那

Extjs源码之-- Ext.util.JSON
很多写extjs的朋友说,Extjs的源码之间的关系太紧了,所以不能像其他很多框架那样,能分模块按需加载,但Ext很难做到,其实这确实是存在这样的问题,但如果作为一个框架,代码之间没有依赖性,那这代码必然不是最精简的,但其实Ext的很多代码还是依赖性很小的,自己稍微加工一下就可以做成自己需要的工具函数用!看代码

//JSON对象和String对象转化Ext.util.JSON = {//格式化数字<10的前面补0pad : function(n) {return n < 10 ? "0" + n : n;},//把字符串转化为JSON格式decode:function(json){return eval("(" + json + ')'); },//把JSON对象转化为字符串encode:function(o){if(typeof o == "undefined" || o === null){return "null";}else if(Ext.isArray(o)){//数组            var a = ["["], b, i, l = o.length, v;for (i = 0; i < l; i++) {v = o[i];switch (typeof v) {case "undefined":case "function":case "unknown":break;default:if (b) {a.push(',');}a.push(v === null ? "null" : Ext.util.JSON.encode(v));b = true;}}a.push("]");return a.join("");}else if(Ext.isDate(o)){//日期对象return '"' + o.getFullYear() + "-" +Ext.util.JSON.pad(o.getMonth() + 1) + "-" +Ext.util.JSON.pad(o.getDate()) + " " +Ext.util.JSON.pad(o.getHours()) + ":" +Ext.util.JSON.pad(o.getMinutes()) + ":" +Ext.util.JSON.pad(o.getSeconds()) + '"';}else if(typeof o == "string"){//字符串,转义回车换行,双引号,反斜杠...等var m = {"\b": '\\b',"\t": '\\t',"\n": '\\n',"\f": '\\f',"\r": '\\r','"' : '\"',"\": '\\\\'};            if (/["\\\x00-\x1f]/.test(o)) {                return '"' + o.replace(/([\x00-\x1f\"])/g, function(a, b) {                    var c = m[b];                    if(c){                        return c;                    }                    c = b.charCodeAt();                    return "\\u00" +                        Math.floor(c / 16).toString(16) +                        (c % 16).toString(16);                }) + '"';            }            return '"' + o + '"';}else if(typeof o == "number"){return isFinite(o) ? String(o) : "null";}else if(typeof o == "boolean"){return String(o);}else {//json格式的对象var a = ["{"], b, i, v;for (i in o) {v = o[i];switch (typeof v) {case "undefined":case "function":case "unknown":break;default:if(b){a.push(',');}a.push(Ext.util.JSON.encode(i), ":", v === null ? "null" : Ext.util.JSON.encode(v));b = true;}}a.push("}");return a.join("");}    }};Ext.encode = Ext.util.encode;Ext.decode = Ext.util.decode;

热点排行
Bad Request.