Extjs 소스 코드 -- Ext. util. JSON

많은 extjs 를 쓴 친구 들 은 Extjs 의 소스 코드 간 의 관계 가 너무 빡빡 해서 다른 많은 프레임 워 크 처럼 모듈 을 나 누 어 불 러 올 수 없 지만 Ext 는 하기 어렵다 고 말 했다. 사실은 이런 문제 가 존재 한다. 그러나 하나의 프레임 워 크 로 서 코드 간 에 의존 성 이 없다 면 이 코드 는 가장 간단 하지 않 을 것 이다.그러나 사실 Ext 의 많은 코드 는 의존성 이 매우 작 습 니 다. 자신 이 조금 만 가공 하면 자신 이 필요 로 하 는 도구 함수 로 만 들 수 있 습 니 다!코드 보기

//JSON   String    
Ext.util.JSON = {
	//     <10    0
	pad : 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',
					"
": '\
', "\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;

좋은 웹페이지 즐겨찾기