Cookie = {};
/*
* Date 개체의 setTime 메서드는 1970-01-01 이후의 밀리초 수를 개체에 설정하고 반환합니다. 이후 날짜 원본 객체가 아닌 밀리초 수입니다.
* 쿠키가 만료 속성을 설정하지 않거나 만료 시간이 현지 시간보다 작으면 다음 탐색 시 만료됩니다.
* document.cookie 객체는 모든 값을 문자열 형식으로 반환하며 만료 시간이나 기타 값은 포함하지 않습니다.
*
*/
(function() {
var nDay = 24 * 60 * 60 * 1000;
var isString = function(v ) {
return typeof v === "string";
}
var isArray = function(v) {
return Object.prototype.toString.apply( v) == "[객체 배열 ]"
}
var isObject = function(v) {
return v && typeof v == "object"
}
var isDate = function(v) {
return Object.prototype.toString.apply(v) == "[객체 날짜]"
}
var getTime = function() {
return new Date() .getTime();
}
var Trim = function(val) {
return (val || "").replace(/^s |s $/g, ""); }
var tryEval = function (val) {
var Obj, e
try {
Obj = eval(val)
} catch (e) {
Obj = val ;
}
return Obj;
}
var ObjectToString = function(o) {
var tstr = "{"
for (var v in o) if (isArray(o[v] )) {
tstr = v ":" ArrayToString(o[v]) ","
} else if (isObject(o[v])) {
tstr = v ":" ObjectToString( o[v]) ",";
} else if (isString(o[v])) {
tstr = v ":"" o[v].toString( ) "",";
} else {
tstr = v ":" o[v].toString() ",";
}
}
return tstr.slice(0 , -1) "}";
}
var ArrayToString = function(o) {
var tstr = "[";
for (var v in o) {
if (isArray (o[v])) {
tstr = ArrayToString(o[v]) ",";
} else if (isObject(o[v])) {
tstr = ObjectToString(o[v ]) ",";
} else {
tstr = o[v].toString() ","
}
}
return tstr.slice(0, -1) "]";
}
쿠키 = {
Get: function() {
return document.cookie;
},
Set: function(val) {
document.cookie = val;
},
지우기: function() {
var temp = this.Query()
var o
for (o in temp); >this.Delete(o);
}
},
GetDayTime: function(val) {
var texpires = new Date()
texpires.setTime(texpires.getTime() val * nDay);
return texpires;
},
Write: function() {
/*
* Cookie.Write(Object); 이름은 main; >* Cookie.Write(varname , Object); varname: 변수 이름, Object: 쓰기 개체;
* Cookie.Write(Object, Date); 개체: 쓰기 개체, Date: 만료 시간; Write(varname, Object , Date); varname: 변수 이름, Object: 쓰기 개체, Date: 만료 시간
* Cookie.Write(varname, Object, Date, Domain, Path); 쓰기 객체, 날짜: 만료 시간, 도메인: 도메인, 경로: 하위 디렉터리
*/
if (arguments.length == 1) {
var tvalue = 인수[0]
var tstr = " ";
var texpires = new Date(); texpires.getTime() 1 * nDay)
if (isArray(tvalue)) {
tstr = ArrayToString(tvalue);
} else if (isObject(tvalue)) {
tstr = ObjectToString(tvalue);
} else {
tstr = tvalue.toString();
tstr = " main= " escape(tstr) ";expires=" texpires.toGMTString() ";";
} else if (arguments.length == 2) {
var tname, tvalue, texpires, tstr = "" ;
if (isDate(arguments[1])) {
tname = "main";
tvalue = 인수[0]
texpires = 인수[1]
} else
tname = 인수[0];
tvalue = 인수[1];
texpires = new Date()(texpires.getTime() 1 * nDay)
if (isArray(tvalue)) {
tstr = ArrayToString(tvalue);
} else if (isObject(tvalue)) {
tstr = ObjectToString(tvalue);
>tstr = tvalue.toString();
}
tstr = tname "=" escape(tvalue) ";expires=" texpires.toGMTString() ";">} else if (arguments.length == 3) {
var tname = 인수[0], tvalue = 인수[1], texpires = 인수[2], tstr = ""
if (isArray(tvalue)) {
tstr = ArrayToString (tvalue);
} else if (isObject(tvalue)) {
tstr = ObjectToString(tvalue)
} else {
tstr = tvalue.toString();
tstr = tname "=" escape(tvalue) ";expires=" texpires.toGMTString() ";";
} else if (arguments.length == 5) {
var tname = 인수[ 0] , tvalue = 인수[1], texpires = 인수[2], tdomain = 인수[3], tpath = 인수[4], tstr = ""
if (isArray(tvalue)) {
tstr = ArrayToString(tvalue);
} else if (isObject(tvalue)) {
tstr = ObjectToString(tvalue);
} else {
tvalue.toString(); }
tstr = tname "=" escape(tvalue) ";expires=" texpires.toGMTString() ";domain=" tdomain ";path=" tpath ";"
}
alert(tstr );
this.Set(tstr)
},
Query: function() {
/*
* Cookie.Query(); 모든 쿠키 값으로 구성된 객체를 반환합니다.
* Cookie.Query(string); 지정된 이름; 실패하면 정의되지 않음을 반환합니다.
* Cookie.Query(string, Object); 실패하면 정의되지 않은 이름을 반환합니다. /
var tname = " ", tright = -1;
var tstr = this.Get()
var tObj =
if (arguments.length == 0) {
var i = 0;
do {
tname = Trim(tstr.slice(i, tstr.indexOf("=", i)))
tright = tstr.indexOf(" ;", i);
if (tright == -1) {
tvalue = unescape(tstr.slice(tstr.indexOf("=", i) 1, tstr.length));
} else {
tvalue = unescape( tstr.slice(tstr.indexOf("=", i) 1, tright))
}
tObj[tname] = tryEval(tvalue); i = tstr.indexOf(";", i) == -1 ? -1 : tstr.indexOf(";", i) 1
} while (i != -1); {
tname = 인수[0] ;
if (tstr.indexOf(tname) == -1) return undefine;
var i = tstr.indexOf(tname); tstr.slice(i, tstr.indexOf( "=", i)));
tright = tstr.indexOf(";", tstr.indexOf(tname)) == -1 ? indexOf(";", tstr.indexOf( tname));
tvalue = unescape(tstr.slice(tstr.indexOf(tname) tname.length 1, tright))
if (arguments.length == 1) {
tObj = tryEval( tvalue);
} else if (arguments.length == 2) {
tObj = 인수[1]
tObj[tname] = tryEval(tvalue) ;
}
}
return tObj;
},
업데이트: function() {
return this.Write.apply(this, 인수),
삭제: function() {
if (arguments.length == 1) {
var varname = 인수[0];
if (this.Query(varname)) {
this. Update(varname, "", new Date( 1970, 01, 01));
}
}
}
}
실행이 있습니다. eval에서 문자열에서 객체로, 객체 또는 배열 객체에서 해당 함수 함수를 문자열 형식으로 가져와 일부 JSON 작업을 시뮬레이션합니다. 물론 모든 JavaScript 객체를 저장할 수는 없으며 그 중 일부만 충족됩니다.
개인적인 이해가 부족합니다.
Javascript의 익명 기능:
http://dancewithnet.com/2008/ 05/07/javascript-anonymous-function/
Javascript 폐쇄: