当前位置: 首页 > news >正文

localStorage小结

使用HTML5可以在本地存储用户的浏览数据。。 

什么是 HTML5 Web 存储?

在HTML5中,新加入了一个localStorage特性,这个特性主要是用来作为本地存储来使用的,解决了cookie存储空间不足的问题(cookie中每条cookie的存储空间为4k),localStorage中一般浏览器支持的是5M大小,这个在不同的浏览器中localStorage会有所不同。早些时候,本地存储使用的是 cookie。但是Web 存储需要更加的安全与快速. 这些数据不会被保存在服务器上,但是这些数据只用于用户请求网站数据上.它也可以存储大量的数据,而不影响网站的性能.

 目前所有的浏览器中都会把localStorage的值类型限定为string类型,非字符串的数据在存储之前会被转换成字符串,所以对JSON对象等类型需要做一些转换。数据以键/值对的形式存在, localStorage和sessionStorage的使用也是遵循同源策略的,所以不同的网站之间是不能共用相同的localStorage或者sessionStorage。

localStorage与sessionStorage的区别

localStorage属于永久性存储,而sessionStorage属于当会话结束的时候,sessionStorage中的键值对会被清空。

可以认为localStorage或者sessionStorage相当于一个前端的数据库,数据库主要是增删查改这四个步骤。

以localStorage为例来说明相关的操作:

增:

var storage=window.localStorage;
//方法一
storage["a"]=1;
//方法二
storage.a=1;
//方法三
storage.setItem("a",1);

建议使用方法而不是属性来访问数据,以免某个键会意外重写该对象上已经存在的成员。

删:

1、将localStorage的所有内容清除

var storage=window.localStorage;
storage.setItem("a",1);
storage.setItem("b",2);
storage.clear();
console.log(storage);

2、 将localStorage中的某个键值对删除

var storage=window.localStorage;
storage.setItem("a",1);
storage.setItem("b",2);
storage.removeItem("a");
console.log(storage.a);

查:

var storage=window.localStorage;
//方法一
var a=storage.a;
//方法二
var b=storage["a"]; 
//方法三
var c=storage.getItem("a");

改:

与增相同,遵循“同名覆盖”的原则即键相同,则覆盖。

localStorage键的获取

可以通过结合length属性和key方法来迭代localStorag的值。如下:

var storage = window.localStorage;
storage.setItem('a',1);
storage.setItem('b',2);
storage.setItem('c',3);
for(var i=0,len=storage.length;i<len;i++){
     var key = storage.key(i);
     var value = storage.getItem(key);
     console.log(key + "=" + value);
 }
        

使用localStorage存储json对象时,可以先通过JSON.stringify()这个方法,来将JSON转换成为JSON字符串,然后保存到localStorage中。

读取JSON字符串之后可以使用JSON.parse()方法将JSON字符串转换成为JSON对象。

转载于:https://www.cnblogs.com/happypayne/p/7646368.html

相关文章:

  • scrum学习心得
  • Mysql字符集设置
  • httpclient连接池
  • JS判断键盘是否按的回车键并触发指定按钮点击操作
  • 根据ip抓 包
  • Mac下Tomcat安装配置80默认端口设置
  • Jzoj4699 Password
  • (十)T检验-第一部分
  • [Bzoj4722]由乃(线段树好题)(倍增处理模数小快速幂)
  • JAVA-JSP内置对象之request对象的其他方法
  • SVN冲突解决
  • JavaScript table动态生成数据
  • python-爬虫day1
  • 调用自定义验证码出现的问题
  • 程序媛,坚持这几个好习惯让你越来越美
  • 9月CHINA-PUB-OPENDAY技术沙龙——IPHONE
  • JS 中的深拷贝与浅拷贝
  • 【347天】每日项目总结系列085(2018.01.18)
  • 08.Android之View事件问题
  • Android 控件背景颜色处理
  • canvas 高仿 Apple Watch 表盘
  • ComponentOne 2017 V2版本正式发布
  • Django 博客开发教程 8 - 博客文章详情页
  • ES6之路之模块详解
  • JavaScript HTML DOM
  • Javascript 原型链
  • Java的Interrupt与线程中断
  • Java精华积累:初学者都应该搞懂的问题
  • Java知识点总结(JavaIO-打印流)
  • use Google search engine
  • weex踩坑之旅第一弹 ~ 搭建具有入口文件的weex脚手架
  • 大主子表关联的性能优化方法
  • 道格拉斯-普克 抽稀算法 附javascript实现
  • 服务器之间,相同帐号,实现免密钥登录
  • 探索 JS 中的模块化
  • 体验javascript之美-第五课 匿名函数自执行和闭包是一回事儿吗?
  • ​Z时代时尚SUV新宠:起亚赛图斯值不值得年轻人买?
  • ​低代码平台的核心价值与优势
  • ​人工智能之父图灵诞辰纪念日,一起来看最受读者欢迎的AI技术好书
  • #include到底该写在哪
  • $.ajax中的eval及dataType
  • (01)ORB-SLAM2源码无死角解析-(66) BA优化(g2o)→闭环线程:Optimizer::GlobalBundleAdjustemnt→全局优化
  • (13)Latex:基于ΤΕΧ的自动排版系统——写论文必备
  • (6)设计一个TimeMap
  • (第27天)Oracle 数据泵转换分区表
  • (第二周)效能测试
  • (附源码)spring boot校园健康监测管理系统 毕业设计 151047
  • (附源码)小程序 交通违法举报系统 毕业设计 242045
  • (篇九)MySQL常用内置函数
  • (切换多语言)vantUI+vue-i18n进行国际化配置及新增没有的语言包
  • (三分钟)速览传统边缘检测算子
  • (转)使用VMware vSphere标准交换机设置网络连接
  • (转)原始图像数据和PDF中的图像数据
  • *p=a是把a的值赋给p,p=a是把a的地址赋给p。
  • ./和../以及/和~之间的区别