JS面向对象编程 for Cookie


Posted in Javascript onSeptember 19, 2010

各位如果有更好的见解可讨论下!

/* 
* 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数据对象 
*/ 
Cookie.prototype.store = function(/*过期时间(1表示一天以此类推)*/daysToLive,/*当前Cookie有效地址*/path,/*当前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数据对象指定属性 
*/ 
Cookie.prototype.remove = function(/*当前Cookie有效地址*/path,/*当前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); 
} 
/* 
* 验证当前客户端浏览器是否支持Cookie 
*/ 
Cookie.IsAllowCookie = function(){ 
if(!navigator.cookieEnabled){ 
alert('温馨提示:\r\n您的浏览器当前已禁用页面Cookie!这可能会导致您在\r\n\r\n选择食物数据的时候刷新页面丢失您已选择的食物数据!\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); 
}
Javascript 相关文章推荐
jquery实现加载等待效果示例
Sep 25 Javascript
浅析js设置控件的readonly与enabled属性问题
Dec 25 Javascript
原生js结合html5制作简易的双色子游戏
Mar 30 Javascript
Javascript简单改变表单元素背景的方法
Jul 15 Javascript
jquery性能优化高级技巧
Aug 24 Javascript
jQuery实现的鼠标滑过弹出放大图片特效
Jan 08 Javascript
jquery实现表单获取短信验证码代码
Mar 13 Javascript
Vue.js render方法使用详解
Apr 05 Javascript
Vue实现移动端页面切换效果【推荐】
Nov 13 Javascript
小程序中this.setData的使用和注意事项
Aug 28 Javascript
小程序最新获取用户昵称和头像的方法总结
Sep 23 Javascript
如何基于jQuery实现五角星评分
Sep 02 jQuery
网络之美 JavaScript中Get和Set访问器的实现代码
Sep 19 #Javascript
asp.net下使用jquery 的ajax+WebService+json 实现无刷新取后台值的实现代码
Sep 19 #Javascript
jquery异步循环获取功能实现代码
Sep 19 #Javascript
JavaScript随机排序(随即出牌)
Sep 17 #Javascript
js下通过getList函数实现分页效果的代码
Sep 17 #Javascript
前端开发的开始---基于面向对象的Ajax类
Sep 17 #Javascript
基于jquery的仿百度的鼠标移入图片抖动效果
Sep 17 #Javascript
You might like
php curl模拟post请求小实例
2013/11/13 PHP
php实现四舍五入的方法小结
2015/03/03 PHP
PHP如何实现订单的延时处理详解
2017/12/30 PHP
laravel框架中表单请求类型和CSRF防护实例分析
2019/11/23 PHP
jquery keypress,keyup,onpropertychange键盘事件
2010/06/25 Javascript
异步javascript的原理和实现技巧介绍
2012/11/08 Javascript
javascript列表框操作函数集合汇总
2013/11/28 Javascript
jQuery简单几行代码实现tab切换
2015/03/10 Javascript
node.js调用C++开发的模块实例
2015/07/03 Javascript
JS创建对象几种不同方法详解
2016/03/01 Javascript
JavaScript的函数式编程基础指南
2016/03/19 Javascript
jQuery图片前后对比插件beforeAfter用法示例【附demo源码下载】
2016/09/20 Javascript
JavaScript三种绑定事件方式及相互之间的区别分析
2017/01/10 Javascript
vue实现ToDoList简单实例
2017/02/07 Javascript
jQuery插件zTree实现更新根节点中第i个节点名称的方法示例
2017/03/08 Javascript
jquery实现表单获取短信验证码代码
2017/03/13 Javascript
javascript实现获取一个日期段内每天不同的价格(计算入住总价格)
2018/02/05 Javascript
Vue中v-for的数据分组实例
2018/03/07 Javascript
React 使用browserHistory项目访问404问题解决
2018/06/01 Javascript
React中this丢失的四种解决方法
2019/03/12 Javascript
Vue.js暴露方法给WebView的使用操作
2020/09/07 Javascript
[10:04]国际邀请赛采访专栏:DK.Farseer,mouz.Black^,采访员Josh专访
2013/08/05 DOTA
[08:29]DOTA2每周TOP10 精彩击杀集锦vol.7
2014/06/25 DOTA
python创建关联数组(字典)的方法
2015/05/04 Python
Python中time模块和datetime模块的用法示例
2016/02/28 Python
Python编程实现使用线性回归预测数据
2017/12/07 Python
python函数map()和partial()的知识点总结
2020/05/26 Python
Python使用tkinter实现摇骰子小游戏功能的代码
2020/07/02 Python
python实现文件+参数发送request的实例代码
2021/01/05 Python
工作会议主持词
2014/03/17 职场文书
煤矿开采专业求职信
2014/07/08 职场文书
结婚纪念日感言
2015/08/01 职场文书
汽车修理厂管理制度
2015/08/05 职场文书
任命书格式模板
2015/09/22 职场文书
2016年大学生社区服务活动总结
2016/04/06 职场文书
详细分析PHP7与PHP5区别
2021/06/26 PHP