相同点:都可以存储在客户端
不同点:
1、存储大小
  • cookie数据大小不能超过4K。
  • sessionStorage 和 localStorage 虽然也有大小限制,但是比cookie大得多,可以达到5M或更大。
2、有效t时间
  • localStorage 存储持久数据,浏览器关闭后数据不会丢失除非主动删除数据;
  • sessionStorage 数据在当前浏览器窗口关闭后自动删除。
  • cookie 设置的cookie过期时间之前一直有效,即使窗口或浏览器关闭。
3、数据和服务器之间的交互方式
  • cookie的数据每次都会携带在HTTP头中会自动传递到服务器,服务器端也可以写cookie到客户端。
  • sessionStorage和localStorage不会自动把数据发送给服务器,仅在本地保存。
 
 
cookie的操作
设置cookie
cookie格式
cookie的内容:key=value;key=value……存储,参数名自定义
cookie的过期时间:cookie.expires = 1000 毫秒
cookie的路径:path(不兼容)
var name = 'jem';
    var pwd = '123';
    var now = new Date();
    now.setTime(now.getTime() + 1*24*60*60*1000));
    var path = '/'; //不建议使用
    document.cookie = 'name=' + name + ';expires=' + now.toUTCString() + ';path=' + path; document.cookie = 'pwd=' + name + ';expires=' + now.toUTCString() + ';path=' + path;

  读取cookie

方法1
  

function getKey(key) {
var data = document.cookie;
var findStr = key + '=';
var index = data.indexOf(findStr);
if(index == -1) retuen null;
var subStr = data.subString(index + findStr.length);
var lastIndex = subStr.indexof(';');
if(lastIndex == -1){
return subStr;
}else{
return subStr.substring(0,lastIndex)
}
}

方法2、

function getKey(key) {
return JSON.parse( "{\"" + document.cookie.replace(/;\s+/gim,"\",\"").replace(/=/gim,"\":\"")+"\"}" )[key]; }

  

清除cookie
var name = null;   var pwd = null;   var now = new Date();   var path = "/";//可以是具体的网页   document.cookie= "name=" + name + ";expires=" + now.toUTCString()+ ";path=" + path;//姓名   document.cookie = "pwd=" + pwd + ";expires=" + now.toUTCString()+ ";path=" + path; //密码  
封装方法
var cookie = { set:function(key, value,time) {//设置cookie方法 if(key) return '不能为空'; //设置key不存在的时 返回 var date = new Date(); var expiresDays = time && 1;//默认1天后过期 date.setTime(date.getTime() + expiresDays * 24 * 60 * 60 *1000 );//格式化cookies的时间 document.cookie = key + '=' + value + ';=expires=' + date.toUTCString(); }, get:function(key) { return JSON.parse("{\""+document.cookie.replace(/;\s+/gmi,"\",\"").replace(/=/gim,"\":\"")+"\"}")[key]; }, check:function(key) { var cookieVal = this.get(); if(cookieVal == null||cookieVal == undefinded){ alert('值已存在!') }else{ alert('可以设置值') } }, delete:function(key) { var date = new Date(); date.setTime(date.getTime()-10000);//设置一个过去的时间 document.cookie = key + '=' + value + ';=expires=' + date.toUTCString(); } }
 
sessionStorage 的使用
seddionStorage.setItem(key,value);//必须是字符串 
var value = sessionStorage.getItem(key);//或者sessionStorage 值
sessionStorage.removeItem(key);//删除sessionStorage 的值
seddionStorage.clear();//清空sessionStorage

  localStorage 的使用

同sessionStorage
localStorage和sessionStorage的key和length属性实现遍历
sessionStorage和localStorage提供的key()和length可以方便的实现存储的数据遍历,例如下面的代码:
var storage = window.localStorage; for(var i=0, len=storage.length; i<len;i++){ var key = storage.key(i); var value = storage.getItem(key); console.log(key + "=" + value); }

--------------------------------------------------------------------------------------------------------------------------

最新文章

  1. .NET Core中的认证管理解析
  2. 2016 Google code jam 答案
  3. springMVC 返回类型选择 以及 SpringMVC中model,modelMap.request,session取值顺序
  4. React 学习资源汇总(最全的 React 学习资料)
  5. Scss开发临时学习过程
  6. SQL Server 2012实施与管理实战指南(笔记)——Ch4数据库连接组件
  7. javascript 工具函数
  8. 【转】C++11 标准新特性: 右值引用与转移语义
  9. java使用this关键字调用本类重载构造器
  10. LeetCode Number of Digit One
  11. PhantomJS:基于WebKit、开源的服务器端JavaScript API
  12. Jquery animate的使用方法
  13. KafkaSpout 浅析
  14. C#开发模式——单例模式
  15. bzoj 1415: [Noi2005]聪聪和可可
  16. bzoj 1930: [Shoi2003]pacman 吃豆豆 [费用流]
  17. LeetCode之“树”:Binary Tree Preorder &amp;&amp; Inorder &amp;&amp; Postorder Traversal
  18. ASP.NET Core的实时库: SignalR -- 预备知识
  19. verilog 中task用法
  20. flash中调用XML遇到的中文显示异常问题

热门文章

  1. Mac下安装npm全局包提示权限不够
  2. Native层和so接口和Java层
  3. redo log重做日志缓冲
  4. odoo10学习笔记十二:web controller
  5. SMTP 与 IMAP
  6. 安装教程-VMware 12 安装 Windows 10 企业版
  7. 浅析struct device结构体
  8. Dmidecode命令
  9. InfoQ一波文章:菜鸟核心技术/Intel发布CPU新架构3D堆栈法/BDL/PaddlePaddle/百度第三代Spider/Tera
  10. Redis笔记1-Redis介绍及数据类型使用场景