Web Storage 最早是在Web超文本应用技术工作组(WHAT_WG)的Web应用1.0规范中描述的。这个规范最初的工作最终成为了HTML5 的一部分。Web Storage 的目的是为了克服有 cookie 带来的一些限制,Cookie存储的数据量非常小,而且当数据需要被严格控制在客户端上时,无须持续地将数据发送回服务器,所以可能会造成带宽的浪费。
Web Storage 提供了两个存储对象:localStorage 和 sessionStorage。
好了!关于Web的存储机制就先介绍到这里,如果大家对这方面感兴趣,可以评论区留言,我会另开一个专题进行讲解Web的存储机制。
上面的内容大家也都看到了,应该对 localStorage 也已经有了一个初步的印象了。什么??在总结一遍??那么接着往下看吧。
在HTML5中,新加入了一个localStorage特性,这个特性主要是用来作为本地存储来使用的,解决了cookie存储空间不足的问题(cookie中每条cookie的存储空间为4k),localStorage中一般浏览器支持的是5M大小,这个在不同的浏览器中localStorage会有所不同。它通常只能存储String类型的数据,所以最好在每次存储时把数据转换成JSON格式,取出的时候再转换回来。
在使用之前需要注意两点:
首先在 setItem 存储数据时,可能会达到大小限制,或者是JSON.parse 解析的字符串不符合json规则也很有可能报错,所以在使用的时候最好加上错误捕获:
// try catch 结构: try{ // 我们把有可能报错的内容放入try之中执行; // 报错了不会影响代码的继续执行; // 会把错误信息放到 catch 里面的参数 e 之中;可以通过 e 进行错误排查; }catch( e ){ }
另外在存储容量快满时,会造成getItem性能的急剧下降。
现在正式介绍一下 localStorage 的使用方法:
//存储数据 : // 使用方法存储数据 localStorage.setItem("test" , "hello world1"); // 设置test为 hello world1 localStorage.setItem("test" , "hello world2"); // 覆盖之前的值,现在test为 hello world1 // 使用属性存储数据 localStorage.test3 = "hello word3";
// 获取数据 // 使用方法读取数据 var res = localStorage.getItem("test"); console.log(res); // 使用属性读取数据 var test3 = localStorage.test3;
// 删除数据; localStorage.removeItem("test");
// 清空数据; localStorage.clear();
key():向其中输入索引即可获取对应的键值
var storage=window.localStorage; storage.setItem("test1" , "hello world1"); storage.setItem("test2" , "hello world2"); // 遍历数据,取出每一条数据的key值 for(var i=0;i<storage.length;i++){ var key=storage.key(i); console.log(key); }
对于前端来说存储复杂数据最方便的结构是什么呢? 当然是 数组 + 对象
那么,我们考虑是否可以将对象、数组内容放入到 localstorage 之中进行存储呢 ?
我们要知道: localstorage:只允许存储字符串;
JSON 是字符串结构;标准的json对象{"name" : "jack"}
JSON.stringify(); 将json格式的数据(JavaScript 对象)转换成JSON格式的字符串
var data = {name:"jack"}; data = JSON.stringify(data); localStorage.setItem("data1",data);
JSON.parse(); 将JSON格式的字符串转换成JSON对象进行处理
var str = localStorage.getItem("data1"); var obj = JSON.parse(str); console.log(obj);
你可能需要好好认识一下这个LocalStorage(本地存储)
原文:https://www.cnblogs.com/XH-jing/p/12546008.html