JS面向?qū)ο缶幊?for Cookie
更新時間:2010年09月19日 22:56:22 作者:
前一些天做項(xiàng)目的時候?qū)懥艘粋€通用的OO By Class Cookie今天把它放上來給大家分享下!
各位如果有更好的見解可討論下!
/*
* Js Class Cookie
* Author:Mr Co
*/
var Cookie = function(/*Cookie名稱*/name){
this.$name = name;
var allcookies = document.cookie;
if(allcookies == '') return;
var cookies = allcookies.split(';');
var cookie = null;
for(var i = 0; i < cookies.length; i++){
if(cookies[i].substring(0,name.length + 1) == (name + '=')){
cookie = cookies[i];
break;
}
}
if(cookie == null) return;
var cookieval = cookie.substring(name.length + 1);
var a = cookieval.split('&');
for(var i = 0; i < a.length; i++){
a[i] = a[i].split(':');
}
for(var i = 0; i < a.length; i ++){
this[a[i][0]] = decodeURIComponent(a[i][1]);
}
}
/*
* 保存Cookie數(shù)據(jù)對象
*/
Cookie.prototype.store = function(/*過期時間(1表示一天以此類推)*/daysToLive,/*當(dāng)前Cookie有效地址*/path,/*當(dāng)前Cookie有效域名訪問*/domain,/*安全性*/secure){
var cookieval = '';
for(var prop in this){
if((prop.charAt(0) == '$') || ((typeof this[prop]) == 'function')) continue;
if(cookieval != '') cookieval += '&';
cookieval += prop + ':' + encodeURIComponent(this[prop]);
}
var cookie = this.$name + '=' + cookieval;
if(daysToLive || daysToLive == 0){
cookie += '; max-age=' + (daysToLive * 24 *60 *60);
}
if(path) cookie += '; path=' + path;
if(domain) cookie += ';domain=' + domain;
if(secure) cookie += ';secure';
document.cookie = cookie;
}
/*
* 移除Cookie數(shù)據(jù)對象指定屬性
*/
Cookie.prototype.remove = function(/*當(dāng)前Cookie有效地址*/path,/*當(dāng)前Cookie有效域名訪問*/domain,/*安全性*/secure){
for(var prop in this){
if(prop.charAt(0) != '$' && typeof this[prop] != 'function') delete this[prop];
}
this.store(0,path,domain,secure);
}
/*
* 驗(yàn)證當(dāng)前客戶端瀏覽器是否支持Cookie
*/
Cookie.IsAllowCookie = function(){
if(!navigator.cookieEnabled){
alert('溫馨提示:\r\n 您的瀏覽器當(dāng)前已禁用頁面Cookie!這可能會導(dǎo)致您在\r\n\r\n選擇食物數(shù)據(jù)的時候刷新頁面丟失您已選擇的食物數(shù)據(jù)!\r\n\r\n建議您啟用瀏覽器Cookie!');
return false;
}
return true;
}
測試JS DEMO
function testFn(){
var cookie = new Cookie('Test');
if(!cookie.name || !cookie.color){
cookie.name = prompt('What is your name:','');
cookie.color = prompt('What is your favorite color:','');
}
if(!cookie.visits) cookie.visits = 1;
else cookie.visits++;
cookie.store(10);
alert('color:' + cookie.color + ' name:' + cookie.name + ' visits:' + cookie.visits);
}
復(fù)制代碼 代碼如下:
/*
* Js Class Cookie
* Author:Mr Co
*/
var Cookie = function(/*Cookie名稱*/name){
this.$name = name;
var allcookies = document.cookie;
if(allcookies == '') return;
var cookies = allcookies.split(';');
var cookie = null;
for(var i = 0; i < cookies.length; i++){
if(cookies[i].substring(0,name.length + 1) == (name + '=')){
cookie = cookies[i];
break;
}
}
if(cookie == null) return;
var cookieval = cookie.substring(name.length + 1);
var a = cookieval.split('&');
for(var i = 0; i < a.length; i++){
a[i] = a[i].split(':');
}
for(var i = 0; i < a.length; i ++){
this[a[i][0]] = decodeURIComponent(a[i][1]);
}
}
/*
* 保存Cookie數(shù)據(jù)對象
*/
Cookie.prototype.store = function(/*過期時間(1表示一天以此類推)*/daysToLive,/*當(dāng)前Cookie有效地址*/path,/*當(dāng)前Cookie有效域名訪問*/domain,/*安全性*/secure){
var cookieval = '';
for(var prop in this){
if((prop.charAt(0) == '$') || ((typeof this[prop]) == 'function')) continue;
if(cookieval != '') cookieval += '&';
cookieval += prop + ':' + encodeURIComponent(this[prop]);
}
var cookie = this.$name + '=' + cookieval;
if(daysToLive || daysToLive == 0){
cookie += '; max-age=' + (daysToLive * 24 *60 *60);
}
if(path) cookie += '; path=' + path;
if(domain) cookie += ';domain=' + domain;
if(secure) cookie += ';secure';
document.cookie = cookie;
}
/*
* 移除Cookie數(shù)據(jù)對象指定屬性
*/
Cookie.prototype.remove = function(/*當(dāng)前Cookie有效地址*/path,/*當(dāng)前Cookie有效域名訪問*/domain,/*安全性*/secure){
for(var prop in this){
if(prop.charAt(0) != '$' && typeof this[prop] != 'function') delete this[prop];
}
this.store(0,path,domain,secure);
}
/*
* 驗(yàn)證當(dāng)前客戶端瀏覽器是否支持Cookie
*/
Cookie.IsAllowCookie = function(){
if(!navigator.cookieEnabled){
alert('溫馨提示:\r\n 您的瀏覽器當(dāng)前已禁用頁面Cookie!這可能會導(dǎo)致您在\r\n\r\n選擇食物數(shù)據(jù)的時候刷新頁面丟失您已選擇的食物數(shù)據(jù)!\r\n\r\n建議您啟用瀏覽器Cookie!');
return false;
}
return true;
}
測試JS DEMO
復(fù)制代碼 代碼如下:
function testFn(){
var cookie = new Cookie('Test');
if(!cookie.name || !cookie.color){
cookie.name = prompt('What is your name:','');
cookie.color = prompt('What is your favorite color:','');
}
if(!cookie.visits) cookie.visits = 1;
else cookie.visits++;
cookie.store(10);
alert('color:' + cookie.color + ' name:' + cookie.name + ' visits:' + cookie.visits);
}

面向?qū)ο蟮腏avascript之二(接口實(shí)現(xiàn)介紹)
接口是面向?qū)ο驤avascript工具箱中最有用的特性之一。我們都知道GOF在設(shè)計(jì)模式中說到:面向接口編程,而非面向?qū)崿F(xiàn)編程
2012-01-01 
JavaScript 基于原型的對象(創(chuàng)建、調(diào)用)
在我們寫js代碼的時候,內(nèi)部對象是不可避免的要引用,但是光靠這些對象是不夠的,所以需要我們自己定義對象,這個時候通常用到的對象是第三種,即基于原型的對象,下面就如何創(chuàng)建自己的對象,定義對象的方法、屬性,調(diào)用對象給出詳細(xì)的說明。
2009-10-10 
Javascript 類與靜態(tài)類的實(shí)現(xiàn)
在Javascript里,對面向?qū)ο蟛]有一個直接的實(shí)現(xiàn),對于代碼方面也是非常的靈活。
2010-04-04