前端——localStorage详细总结
一、localStorage简介:
在HTML5中,新加入了一个localStorage特性,这个特性主要是用来作为本地存储来使用的,解决了cookie存储空间不足的问题(cookie中每条cookie的存储空间为4k),localStorage中一般浏览器支持的是5M大小,这个在不同的浏览器中localStorage会有所不同。
二、localStorage的优势与局限:
优势:
1、localStorage拓展了cookie的4K限制
2、localStorage会可以将第一次请求的数据直接存储到本地,这个相当于一个5M大小的针对于前端页面的数据库,相比于cookie可以节约带宽,但是这个却是只有在高版本的浏览器中才支持的
局限:
1、浏览器的大小不统一,并且在IE8以上的IE版本才支持localStorage这个属性
2、目前所有的浏览器中都会把localStorage的值类型限定为string类型,这个在对我们日常比较常见的JSON对象类型需要一些转换
3、localStorage在浏览器的隐私模式下面是不可读取的
4、localStorage本质上是对字符串的读取,如果存储内容多的话会消耗内存空间,会导致页面变卡
5、localStorage不能被爬虫抓取到
三、localStorage的使用:
localStorage是html5的新特性,所以并不是所有的浏览器都支持,因此在使用localStorage时需要先判断浏览器是否支持localStorage。
下面这段代码就是用来判断浏览器是否支持localStorage
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>localStorage</title>
</head>
<body>
<script>
if (window.localStorage) {
alert("浏览器支持localStorage")
} else {
alert("浏览器不支持localStrorage")
}
</script>
</body>
</html>
既然localStorage是用来存取数据的,那我们先从localStorage存数据开始说起
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>localStorage</title>
</head>
<body>
<script>
if (window.localStorage) {
var storage=window.localStorage;
storage.a="我是a"
alert(storage.a)
} else {
alert("浏览器不支持localStrorage")
}
</script>
</body>
</html>
上面的代码我们在localStorage中存取了一个字段a,值是"我是a"
localStorage支持多种存取值的方式,我们一一来看一下
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>localStorage</title>
</head>
<body>
<script>
if (window.localStorage) {
var storage=window.localStorage;
//第一种存值方式
storage.a="我是a"
//第二种存值方式
storage['b']=100
//第三种存值方式
storage.setItem('c',"我是c") //第一种取值方式
var one=storage.a;
alert("第一种取值:"+one) //第二种取值方式
var two=storage['b']
alert("第二种取值:"+two) //第三种取值方式
var three=storage.getItem('c')
alert("第三种取值:"+three) } else {
alert("浏览器不支持localStrorage")
}
</script>
</body>
</html>
上面介绍了localStorage存值与取值的三种方式,具体用哪种方式都可以,其中官方推荐的是getItem\setItem这两种方法对其进行存取
那么数据存放进去我们如果想要修改该怎么办?别急,看下面代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>localStorage</title>
</head>
<body>
<script>
if (window.localStorage) {
var storage=window.localStorage;
storage.setItem('a',"我是a")
var before=storage.getItem('a')
alert("修改前的a:"+before) storage.setItem('a',"a被修改了")
var after=storage.getItem('a')
alert("修改之后的a:"+after) } else {
alert("浏览器不支持localStrorage")
}
</script>
</body>
</html>
localStorage的删除:
1、清空localStorage:调用localStorage的clear方法将清空localStorage中的所有内容
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>localStorage</title>
</head>
<body>
<script>
if (window.localStorage) {
var storage=window.localStorage;
storage.a="我是a"
storage['b']=100
storage.setItem('c',"我是c")
alert("删除前的a:"+storage.getItem('a'))
storage.clear()//清空localStorage
alert("删除后的a:"+storage.getItem('a')) } else {
alert("浏览器不支持localStrorage")
}
</script>
</body>
</html>
2、删除某个值:调用localStorage的removeItem()方法删除某个值
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>localStorage</title>
</head>
<body>
<script>
if (window.localStorage) {
var storage=window.localStorage;
storage.a="我是a"
storage['b']=100
storage.setItem('c',"我是c")
alert("删除前的a:"+storage.getItem('a'))
storage.removeItem('a')
alert("删除后的a:"+storage.getItem('a')) } else {
alert("浏览器不支持localStrorage")
}
</script>
</body>
</html>
localStorage的键获取
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>localStorage</title>
</head>
<body>
<script>
if (window.localStorage) {
var storage=window.localStorage;
storage.a="我是a"
storage['b']=100
storage.setItem('c',"我是c")
for(var i=0;i<storage.length;i++){
var key=storage.key(i);
alert(key);
} } else {
alert("浏览器不支持localStrorage")
}
</script>
</body>
</html>
四、localStorage的注意事项:
1、localStorage中存放的是String类型的值
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>localStorage</title>
</head>
<body>
<script>
if (window.localStorage) {
var storage=window.localStorage;
storage.a=100
alert(typeof(storage.a)) } else {
alert("浏览器不支持localStrorage")
}
</script>
</body>
</html>
我们看到上述代码打印的结果为string,虽然我们存放的是int类型的值,但是localStorage还是把它当做string类型来存放
2、如果我们需要将JSON格式的数据存放到localStorage中,则需要借助JSON.stringify()这个方法,来将JSON转换成为JSON字符串
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>localStorage</title>
</head>
<body>
<script>
if (window.localStorage) {
var storage=window.localStorage;
var data={
name:'xiaowang',
sex:'man',
love:'篮球'
};
var d=JSON.stringify(data);
storage.setItem("data",d);
console.log(storage.data); } else {
alert("浏览器不支持localStrorage")
}
</script>
</body>
</html>
读取之后要将JSON字符串转换成为JSON对象,使用JSON.parse()方法
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>localStorage</title>
</head>
<body>
<script>
if (window.localStorage) {
var storage=window.localStorage;
var data={
name:'xiaowang',
sex:'man',
love:'篮球'
};
var d=JSON.stringify(data);
storage.setItem("data",d);
var json=storage.getItem('data')
var jsonObj=JSON.parse(json)
alert(typeof(jsonObj))//结果是object } else {
alert("浏览器不支持localStrorage")
}
</script>
</body>
</html>
前端——localStorage详细总结的更多相关文章
- localStorage详细总结
一.localStorage简介: 在HTML5中,新加入了一个localStorage特性,这个特性主要是用来作为本地存储来使用的,解决了cookie存储空间不足的问题(cookie中每条cooki ...
- ABP 往前端返回详细的错误信息
在这个类:MyABP.Web.Startup.MyABPWebMvcModule 中 的 PreInitialize 方法 添加一句: Configuration.Modules.AbpWebComm ...
- flutter中存储键值对简单数据(相当于前端localstorage概念)
首先需要安装一个官方推荐包: 1 dependencies: 2 flutter: 3 sdk: flutter 4 shared_preferences: any // 先获取 shared pre ...
- 从2014年D2前端技术论坛看前端发展趋势
上周六有幸參加了在杭州阿里巴巴西溪园区举办的2014年D2前端技术论坛和晚上的酒会.实地感受了一下阿里巴巴前端开发的技术氛围和影响力.整体上看这次D2规模还是挺大的,国内前端的知名大牛基本上都到了. ...
- ZooTeam 前端周刊|第 111期
转: ZooTeam 前端周刊|第 111期 ZooTeam 前端周刊|第 111期 浏览更多往期周刊,请访问: https://weekly.zoo.team 基于Vue的前端架构,我做了这15点 ...
- django复习-2-配置、静态文件与路由
一.配置文件 1. BASE_DIR BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) __file__指当 ...
- SpringBoot2 全局异常处理
参考这篇文章里面的几种异常形式: 全局异常处理是个比较重要的功能,一般在项目里都会用到. 大概把一次请求分成三个阶段,来分别进行全局的异常处理. 一:在进入Controller之前,譬如请求一个不存在 ...
- 高可用服务设计之二:Rate limiting 限流与降级
<高可用服务设计之二:Rate limiting 限流与降级> <nginx限制请求之一:(ngx_http_limit_conn_module)模块> <nginx限制 ...
- Spring Boot--01错误处理
package com.smartmap.sample.ch1.controller.view; import java.io.IOException; import java.util.Collec ...
随机推荐
- centos7.3下安装nginx
Nginx简介 Nginx是一款轻量级的Web服务器/反向代理服务器/电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行.其特点是占有内存少,并发能力强, Nginx的并发能力在 ...
- 判断一组checkbox/redio是否被选中,为其添加样式
业务场景:当一行中有一个CheckBox被选中,则为此行添加class. <script type="text/javascript"> $(function(){ $ ...
- Web三维编程入门总结之二:面向对象的基础Web3D框架
本篇主要通过分析Tony Parisi的sim.js库(原版代码托管于:https://github.com/tparisi/WebGLBook/tree/master/sim),总结基础Web3D框 ...
- Three.js三维模型几何体旋转、缩放和平移
创建场景中的三维模型往往需要设置显示大小.位置.角度,three.js提供了一系列网格模型对象的几何变换方法,从WebGL的角度看,旋转.缩放.平移对应的都是模型变换矩阵,关于矩阵变换内容可以观看本人 ...
- windows/linux下如何更换Python的pip源
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:xlixiaohui PS:如有需要Python学习资料的小伙伴可以 ...
- [apue] getopt 可能重排参数
看第21章时,介绍到了解析命令行的神器 getopt,了解了 linux 下处理通用命令行的方法. 命令行可分为参数与选项,其中不带 - 或 -- 前缀的为参数,对一个命令而言数量是固定的,多个参数之 ...
- ORA-0245
经常有客户报错ORA-0245 1.11.2 rac环境, rman存在snap控制文件路径,默认是文件系统[非共享,导致备份控制文件报错] 解决方法:将snap路径配置到ASM磁盘组共享路径[nfs ...
- MySQL系列操作
Linux环境下安装使用MySQL Portal 数据备份&恢复 Portal
- 【论文笔记】YOLOv4: Optimal Speed and Accuracy of Object Detection
论文地址:https://arxiv.org/abs/2004.10934v1 github地址:https://github.com/AlexeyAB/darknet 摘要: 有很多特征可以提高卷积 ...
- IOC 概念
转摘:https://www.cnblogs.com/DebugLZQ/archive/2013/06/05/3107957.html 博文目录 1.IOC的理论背景 2.什么是IOC 3.IOC也叫 ...