Cookie = {};
/*
* Date オブジェクトの setTime メソッドは、1970-01-01 からのミリ秒数を設定し、オブジェクトに設定して、それ以降の日付 元のオブジェクトではなくミリ秒数。
* Cookie が期限切れ属性を設定していない場合、または有効期限が現地時間より短い場合、次回の閲覧時に期限切れになります。
* document.cookie オブジェクトは、有効期限などを含まないすべての値を文字列形式で返します。 🎜>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 = "{";
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) "]";
}
Cookie = {
Get: function() {
return document.cookie;
Set: function(val) {
document.cookie = val;
},
Clear: function() {
var temp = this.Query()
for (o in temp); >this.Delete(o);
}
},
GetDayTime: function(val) {
var texires = new Date();
texires.setTime() val * nDay);
return texires;
書き込み: function() {
/*
* Cookie.Write(Object); >* Cookie.Write(varname , Object); varname: 変数名、Object: 書き込みオブジェクト;
* Cookie.Write(Object, Date);
* Cookie。 Write(varname, Object , Date); varname: 変数名, オブジェクト: 書き込みオブジェクト, 日付: 有効期限; Cookie.Write(varname, Object, Date, Domain, Path);オブジェクトの書き込み、日付: 有効期限、ドメイン: ドメイン、パス: サブディレクトリ;
*/
if (arguments.length == 1) {
var tvalue = argument[0]; = " ";
var texires = new Date(); texpires.setTime() 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, texires, tstr = "" ;
if (isDate(arguments[1])) {
tname = "main";
tvalue = argument[1]; else {
tname = 引数[0];
tvalue = 引数[1];
texpires.setTime() 1 * nDay); >if (isArray(tvalue)) {
tstr = ArrayToString(tvalue);
} else if (isObject(tvalue)) {
tstr = ObjectToString(tvalue); else {
tstr = tvalue.toString();
}
tstr = tname "="scape(tvalue) ";expires=" texpires.toGMTString() ";"
} else if (arguments.length == 3) {
var tname = argument[0], tvalue = argument[1], texpires = argument[2], tstr = "";
if (isArray(tvalue)) {
tstr = ArrayToString (tvalue);
} else if (isObject(tvalue)) {
tstr = ObjectToString(tvalue);
} else {
tstr = tvalue.toString();
tstr = tname "="scape(tvalue) ";expires=" texpires.toGMTString() ";";
} else if (arguments.length == 5) {
var tname = argument[ 0] 、tvalue = 引数[1]、texpires = 引数[2]、tdomain = 引数[3]、tpath = 引数[4]、tstr = "";
if (isArray(tvalue)) {
tstr = ArrayToString(tvalue);
} else if (isObject(tvalue)) {
tstr = ObjectToString(tvalue);
} else {
tstr = tvalue.toString(); }
tstr = tname "="scape(tvalue) ";expires=" texpires.toGMTString() ";domain=" tdomain ";path=" tpath ";";
}
alert(tstr) );
this.Set(tstr)
},
Query: function() {
/*
* Cookie.Query(); すべての Cookie 値で構成されるオブジェクトを返します。指定された名前; 失敗した場合は、未定義を返します。 Cookie.Query(string, Object); 失敗した場合は、指定された名前のオブジェクトを返します。 /
var tname = tvalue = " ", tright = -1;
var tstr = this.Get();
var tObj = {}; {
var i = 0;
do {
tname = trim(tstr.slice(i, tstr.indexOf("=", i))); ;", 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 = argument[0] ;
if (tstr.indexOf(tname) == -1) 戻り値
var i = tstr.indexOf(tname); tstr.slice(i, tstr.indexOf( "=, i)));
tright = tstr.indexOf(";", tstr.indexOf(tname)) == tstr.length : tstr ? IndexOf(";", tstr.indexOf(tname));
tvalue = unescape(tstr.slice(tstr.indexOf(tname) tname.length 1, tright)); 1) {
tObj = tryEval( tvalue);
} else if (arguments.length == 2) {
tObj = argument[1];
tObj[tname] = tryEval(tvalue) ;
}
}
return
},
Update: function() {
return this.Write.apply(this, argument); 🎜>削除: function() {
if (arguments.length == 1) {
var varname = argument[0];
if (this.Query(varname)) {
this. Update(varname, "", new Date(1970, 01, 01));
}
}
}
}
実行があります文字列からオブジェクトへの eval を実行し、Object または Array オブジェクトから対応する関数を文字列の形式で取得し、一部の JSON 操作をシミュレートします。もちろん、すべての JavaScript オブジェクトを保存することはできず、一部のみが満たされます。
私の個人的な理解には限界があるので、アドバイスをお願いします。
JavaScript の匿名関数:
http://dancewithnet.com/2008/ 05/07/javascript-anonymous-function/
JavaScript 閉鎖:
http://www.cn-cuckoo.com/wordpress/wp-content/uploads/2007/ 08/JavaScriptClosures.html
Cookie ファイル形式:
http://www.cnblogs.com/sephil/archive/2008/05/06/cookiefmt.html