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 相关文章推荐
JavaScript脚本性能优化注意事项
Nov 18 Javascript
Javascript 文件夹选择框的两种解决方案
Jul 01 Javascript
Jquery拖拽并简单保存的实现代码
Nov 28 Javascript
JS获取地址栏参数的几种方法小结
Feb 28 Javascript
jquery弹出框插件jquery.ui.dialog用法分析
Aug 20 Javascript
knockoutjs动态加载外部的file作为component中的template数据源的实现方法
Sep 01 Javascript
浅析Javascript的自动分号插入(ASI)机制
Sep 29 Javascript
微信小程序 富文本转文本实例详解
Oct 24 Javascript
玩转NODE.JS(四)-搭建简单的聊天室的代码
Nov 11 Javascript
node.js实现登录注册页面
Apr 08 Javascript
解决js相同的正则多次调用test()返回的值却不同的问题
Oct 10 Javascript
详解ES6新增字符串扩张方法includes()、startsWith()、endsWith()
May 12 Javascript
网络之美 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
Codeigniter框架的更新事务(transaction)BUG及解决方法
2014/07/25 PHP
PHP学习笔记(三):数据类型转换与常量介绍
2015/04/17 PHP
利用PHP实现一个简单的用户登记表示例
2017/04/25 PHP
php双层循环(九九乘法表)
2017/10/23 PHP
PHP中PCRE正则解析代码详解
2019/04/26 PHP
PHP使用反向Ajax技术实现在线客服系统详解
2019/07/01 PHP
php传值和传引用的区别点总结
2019/11/19 PHP
clientX,pageX,offsetX,x,layerX,screenX,offsetLeft区别分析
2010/03/12 Javascript
HTML页面滚动时获取离页面顶部的距离2种实现方法
2013/09/05 Javascript
javascript trim函数在IE下不能用的解决方法
2014/09/12 Javascript
javascript拖拽效果延伸学习
2016/04/04 Javascript
JavaScript常用字符串与数组扩展函数小结
2016/04/24 Javascript
基于bootstrap-datetimepicker.js不支持IE8的快速解决方法
2016/11/07 Javascript
bootstrap监听滚动实现头部跟随滚动
2016/11/08 Javascript
jquery实现转盘抽奖功能
2017/01/06 Javascript
基于react后端渲染模板引擎noox发布使用
2018/01/11 Javascript
Vue函数式组件-你值得拥有
2019/05/09 Javascript
koa-router路由参数和前端路由的结合详解
2019/05/19 Javascript
ES6 Object属性新的写法实例小结
2019/06/25 Javascript
解决LayUI数据表格复选框不居中显示的问题
2019/09/25 Javascript
细说webpack6 Babel的使用详解
2019/09/26 Javascript
vue实现多级菜单效果
2019/10/19 Javascript
vue 实现input表单元素的disabled示例
2019/10/28 Javascript
Node.js path模块,获取文件后缀名操作
2020/11/07 Javascript
Python时区设置方法与pytz查询时区教程
2013/11/27 Python
整理Python中的赋值运算符
2015/05/13 Python
详解Django项目中模板标签及模板的继承与引用(网站中快速布置广告)
2019/03/27 Python
Django之提交表单与前后端交互的方法
2019/07/19 Python
Python for循环搭配else常见问题解决
2020/02/11 Python
美国综合购物商城:UnbeatableSale.com
2018/11/28 全球购物
JAVA代码查错题
2014/10/10 面试题
二手房购房协议书范本
2014/10/05 职场文书
电影建党伟业观后感
2015/06/01 职场文书
《跨越海峡的生命桥》教学反思
2016/02/18 职场文书
Linux安装apache服务器的配置过程
2021/11/27 Servers
Python  序列化反序列化和异常处理的问题小结
2022/12/24 Python