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 相关文章推荐
屏蔽Flash右键信息的js代码
Jan 17 Javascript
js 蒙版进度条(结合图片)
Mar 10 Javascript
ExtJs事件机制基本代码模型和流程解析
Oct 24 Javascript
给jQuery方法添加回调函数一款插件的应用
Jan 21 Javascript
jQuery移除元素自动解绑事件实现思路及代码
May 31 Javascript
jQuery实现浮动层随浏览器滚动条滚动的方法
Sep 22 Javascript
JavaScript将DOM事件处理程序封装为event.js 出现的低级错误问题
Aug 03 Javascript
js获取隐藏元素的宽高
Feb 24 Javascript
详解React Native顶|底部导航使用小技巧
Sep 14 Javascript
使用JavaScript破解web
Sep 28 Javascript
200行HTML+JavaScript实现年会抽奖程序
Jan 22 Javascript
Angular7.2.7路由使用初体验
Mar 01 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
PHP去除数组中重复的元素并按键名排序函数
2008/08/18 PHP
PHP中nowdoc和heredoc使用需要注意的一点
2014/03/21 PHP
cakephp打印sql语句的方法
2015/02/13 PHP
PHP中读取文件的几个方法总结(推荐)
2016/06/03 PHP
PHP中$GLOBALS与global的区别详解
2019/03/21 PHP
Javascript开发包大全整理
2006/12/22 Javascript
Add a Picture to a Microsoft Word Document
2007/06/15 Javascript
javascript学习笔记(十二) RegExp类型介绍
2012/06/20 Javascript
jQuery中dom元素上绑定的事件详解
2015/04/24 Javascript
jquery 实现输入邮箱时自动补全下拉提示功能
2015/10/04 Javascript
不想让浏览器运行javascript脚本的方法
2015/11/20 Javascript
JavaScript电子时钟倒计时第二款
2016/01/10 Javascript
jQuery ajax分页插件实例代码
2016/01/27 Javascript
jquery.cookie.js实现用户登录保存密码功能的方法
2016/04/15 Javascript
AngularJS基础 ng-selected 指令简单示例
2016/08/03 Javascript
javascript Function函数理解与实战
2017/12/01 Javascript
Angular实现可删除并计算总金额的购物车功能示例
2017/12/26 Javascript
简述JS控制台的使用
2018/07/15 Javascript
js 计算月/周的第一天和最后一天代码
2020/02/01 Javascript
node.js 如何监视文件变化
2020/09/01 Javascript
JavaScript交换变量常用4种方法解析
2020/09/02 Javascript
[02:17]2016国际邀请赛中国区预选赛VG战队领队采访
2016/06/26 DOTA
浅谈Python用QQ邮箱发送邮件时授权码的问题
2018/01/29 Python
对python中array.sum(axis=?)的用法介绍
2018/06/28 Python
kaggle+mnist实现手写字体识别
2018/07/26 Python
对Python中的条件判断、循环以及循环的终止方法详解
2019/02/08 Python
PyCharm设置Ipython交互环境和宏快捷键进行数据分析图文详解
2020/04/23 Python
python 使用elasticsearch 实现翻页的三种方式
2020/07/31 Python
CSS3 文字动画效果
2020/11/12 HTML / CSS
在C中是否有模拟继承等面向对象程序设计特性的好方法
2012/05/22 面试题
产品质量承诺书
2014/03/27 职场文书
反邪教标语
2014/06/23 职场文书
计算机应用专业自荐信
2014/07/05 职场文书
员工辞职信范文大全
2015/05/12 职场文书
《半截蜡烛》教学反思
2016/02/19 职场文书
MySQL学习总结-基础架构概述
2021/04/05 MySQL