pCookie.js

(function(){

    var PotatogCookie = {};

    //设置cookie
PotatogCookie.set = function(key, value, delay)
{
//默认cookie为七天之后过期 3s 4m 5h 7d 秒 分 时 天
if(delay == "undefined")delay = "7d";
delay = delay.toLowerCase(); var expireDate = new Date(); var num = parseInt(delay);
if(delay.indexOf("d") !== -1)
{
expireDate.setDate(expireDate.getDate() + num);
}
else if(delay.indexOf("h") !== -1)
{
expireDate.setHours(expireDate.getHours() + num);
}
else if(delay.indexOf("m") !== -1)
{
expireDate.setMinutes(expireDate.getMinutes() + num);
}
else if(delay.indexOf("s") !== -1)
{
expireDate.setSeconds(expireDate.getSeconds() + num);
}
else
{
expireDate.setDate(expireDate.getDate() + num);
}
if(typeof value == "object")
{
value = JSON.stringify(value);
}
value = escape(value);
document.cookie = key + "=" + value + ";expires=" + expireDate.toGMTString();
return this.get(key);
} //得到cookie 如果不存在 返回 undefined
PotatogCookie.get = function(key)
{
var objCookie = {};
var cookie = document.cookie;
var keyValueList = cookie.split(";");
for(var index in keyValueList)
{
var keyValue = keyValueList[index].split("=");
var k = keyValue[0].trim();
var v = keyValue[1];
         v = unescape(v);
v = this.decodeJson(v);
objCookie[k] = v;
} if(typeof key == "undefined")
{
return objCookie;
} return objCookie[key];
}
//删除cookie
PotatogCookie.del = function(key)
{
//删除所有cookie
if(typeof key == "undefined")
{
var cookieList = this.get();
for(key in cookieList)
{
this.del(key);
}
return true;
}
else
{
if(this.get(key) == "undefined")
{
return false;
}
else
{
return this.set(key,'',"0s");
}
}
}
PotatogCookie.decodeJson = function(value)
{
//数组转成的对象字符串
var regAryStr = /^\[[\s|\S]*\]$/;
//对象转成的对象字符串
var regObjStr = /^\{([\"\s|\S]+\"\:\"[\s|\S]*)+\"\}$/;
if(regAryStr.test(value))
{
return eval("(" + value + ")");
}
if(regObjStr.test(value))
{
return JSON.parse(value);
}
return value;
}
window.pCookie = PotatogCookie;
})(window);

demo.html

使用方式

设置cookie

pCookie.set("name","张三","7d");

读取cookie 如果不存在 返回undefined

var name = pCookie.get("name");不传参表示获得所有

删除cookie

pCookie.del("name");不传参表示删除所有

js cookie 操作 封装的更多相关文章

  1. js cookie的封装和调用

    <script> function setCookie(cname,cvalue,exdays){ var d = new Date(); d.setTime(d.getTime()+(e ...

  2. js cookie操作

    //写Cookie function writeCookie(name, value) { var expire = new Date(); expire.setFullYear(expire.get ...

  3. js cookie 操作

    <html> <head> <meta charset="utf-8"> <title>Javascript cookie</ ...

  4. JS封装cookie操作函数实例(设置、读取、删除)

    本文实例讲述了JS封装cookie操作函数.分享给大家供大家参考,具体如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 ...

  5. js cookie创建读取删除函数封装

    js cookie创建读取删除函数封装 一.总结 都是为了方便操作,这样弄了很方便 1.创建cookie的函数封装的作用:方便设置过期时间expire,方便设置键和值 2.查询cookie的数据封装的 ...

  6. js简单操作Cookie

    贴一段js简单操作Cookie的代码: //获取指定名称的cookie的值 function getCookie(objName) { var arrStr = document.cookie.spl ...

  7. js中cookie操作

    js中操作Cookie的几种常用方法 * cookie中存在域的概念,使用path和domain区分: * 在同一域中的set和del可以操作同一名称的cookie,但不在同一域中的情况下,则set无 ...

  8. js 判断js函数、变量是否存在 JS保存和删除cookie操作,判断cookie是否存在的方法

    //是否存在指定函数 function isExitsFunction(funcName) {    try {        if (typeof(eval(funcName)) == " ...

  9. DES加密解密 与 Cookie的封装(C#与js互相加密解密)

    2D JS框架 - DES加密解密 与 Cookie的封装(C#与js互相加密解密)   这次实现了JS端的DES加密与解密,并且C#端也能正确解析DES的密文(反之也实现了) 使用的代码如下,非常方 ...

随机推荐

  1. <转载> UE4的Actor类C++简单尝试

    原文链接:   简书小小酥XX https://www.jianshu.com/p/2bcc80f0e789 一开始我用了一段时间UE4,发现如果用蓝图系统真的不太适合我的风格.因为之前一直都是用Un ...

  2. c#基础之异常处理及自定义异常

    一.什么是c#中的异常? 异常是程序运行中发生的错误,异常处理是程序的一部分.c#中的异常类主要是直接或者间接的派生于 System.Exception类 ,也就是说System.Exception类 ...

  3. R语言求根

    求根是数值计算的一个基本问题,一般采用的都是迭代算法求解,主要有不动点迭代法.牛顿-拉富生算法.割线法和二分法. 不动点迭代法 所谓的不动点是指x=f(x)的那些点,而所谓的不懂点迭代法是指将原方程化 ...

  4. 关于JS 的cookie 操作 与 json 的数据结构 问题

    今天写了一个购物车,由于购物车内容是保存在 cookie中 所以不想浪费服务器资源做cookie的操作 故在前端封装了一些对象来处理购物车,由于cookie的数据结构的设计是一个json格式 使用 账 ...

  5. java 的序列化与反序列化

    前言: 一直很不理解java的序列化的概念,为什么java对象的序列化要实现 Serializable的接口?或者要实现Externalizable的接口?而且Externalizable 的父类还是 ...

  6. 解决Visual C++ for Linux: -L"~/projects/path_to_lib_folder" 无法设置library search path的问题

    最近倒腾Linux C/C++项目.以目前的情况来说,要生成编译(build)一个Linux工程脚本,首选的工具必定是CMake.这也是我之前Linux项目的首选.不过自从VS IDE支持Linux ...

  7. eclipse Android项目 DDMS db文件 导出 Failed to pull selection null 问题

    我在 eclipse的Android项目中,在 DDMS导出db文件 时,发现报错:Failed to pull selection null 在左侧选中设备,在进行导出 这样就可以正常的进行导出db ...

  8. docker学习---第一章节

    一.docker的应用场景有哪些 Web 应用的自动化打包和发布 自动化测试和持续集成.发布 在服务型环境中部署和调整数据库或其他的后台应用 从头编译或者扩展现有的OpenShift或Cloud Fo ...

  9. 解决nim db_mysql could not load: libmysql.dll的问题

    title: 解决nim db_mysql could not load: libmysql.dll的问题 nim中使用db_mysql 操作数据库的代码看起来很简单: import db_mysql ...

  10. c# 多线程的几种方式

    1.什么是线程? 进程作为操作系统执行程序的基本单位,拥有应用程序的资源,进程包含线程,进程的资源被线程共享,线程不拥有资源. 2.前台线程和后台线程的区别? 程序关闭时,后台线程直接关闭,但前台线程 ...