一、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详细总结的更多相关文章

  1. localStorage详细总结

    一.localStorage简介: 在HTML5中,新加入了一个localStorage特性,这个特性主要是用来作为本地存储来使用的,解决了cookie存储空间不足的问题(cookie中每条cooki ...

  2. ABP 往前端返回详细的错误信息

    在这个类:MyABP.Web.Startup.MyABPWebMvcModule 中 的 PreInitialize 方法 添加一句: Configuration.Modules.AbpWebComm ...

  3. flutter中存储键值对简单数据(相当于前端localstorage概念)

    首先需要安装一个官方推荐包: 1 dependencies: 2 flutter: 3 sdk: flutter 4 shared_preferences: any // 先获取 shared pre ...

  4. 从2014年D2前端技术论坛看前端发展趋势

    上周六有幸參加了在杭州阿里巴巴西溪园区举办的2014年D2前端技术论坛和晚上的酒会.实地感受了一下阿里巴巴前端开发的技术氛围和影响力.整体上看这次D2规模还是挺大的,国内前端的知名大牛基本上都到了. ...

  5. ZooTeam 前端周刊|第 111期

    转: ZooTeam 前端周刊|第 111期 ZooTeam 前端周刊|第 111期 浏览更多往期周刊,请访问: https://weekly.zoo.team 基于Vue的前端架构,我做了这15点 ...

  6. django复习-2-配置、静态文件与路由

    一.配置文件 1. BASE_DIR BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) __file__指当 ...

  7. SpringBoot2 全局异常处理

    参考这篇文章里面的几种异常形式: 全局异常处理是个比较重要的功能,一般在项目里都会用到. 大概把一次请求分成三个阶段,来分别进行全局的异常处理. 一:在进入Controller之前,譬如请求一个不存在 ...

  8. 高可用服务设计之二:Rate limiting 限流与降级

    <高可用服务设计之二:Rate limiting 限流与降级> <nginx限制请求之一:(ngx_http_limit_conn_module)模块> <nginx限制 ...

  9. Spring Boot--01错误处理

    package com.smartmap.sample.ch1.controller.view; import java.io.IOException; import java.util.Collec ...

随机推荐

  1. poj3585 Accumulation Degree(换根dp)

    传送门 换根dp板子题(板子型选手 题意: 一棵树确定源点和汇点找到最大的流量(拿出一整套最大瘤板子orz ; int head[maxn],tot; struct node { int nt,to; ...

  2. Java入门第一阶段总结

    前言 写了三周的模拟题,对原本就厌恶的模拟更加深恶痛绝.但是不得不说模拟题是对一门语言入门掌握其语法成效最快的一类题,轻松地从C入门到了Java.一直坚信各门语言都是想通的,一力破万法. 作业过程总结 ...

  3. hive常用函数三

    日期函数 1. UNIX时间戳转日期函数: from_unixtime 语法: from_unixtime(bigint unixtime[, string format]) 返回值: string ...

  4. 分享一本Java并发编程的免费好书

    最近当当的大促销又开始了,估计很多人脑子一热,又花钱囤了不少技术书吧. 在我看来大部分程序员买技术书的用途(以下排名按用途从大到小): 让领导.同事看见,你看我多爱学习: 给自己一个心理安慰,我还没废 ...

  5. Java入门系列之线程池ThreadPoolExecutor原理分析思考(十五)

    前言 关于线程池原理分析请参看<http://objcoding.com/2019/04/25/threadpool-running/>,建议对原理不太了解的童鞋先看下此文然后再来看本文, ...

  6. web 应用 为啥 需要用到 tomcat 之类的 部署

    首先了解C/s架构 比如我们常见的QQ,魔兽世界等 这种结构的程序是有服务器来提供服务的,客户端来使用服务 而B/S架构是这样的 它不需要安装客户端,只需要浏览器就可以了 例如QQ农场,这样对客户端的 ...

  7. 一站式WebAPI与认证授权服务

    保护WEBAPI有哪些方法? 微软官方文档推荐了好几个: Azure Active Directory Azure Active Directory B2C (Azure AD B2C)] Ident ...

  8. G - Harmonic Number (II) LightOJ - 1245

    算是一个找规律的题目吧. 枚举前sqrt(n)个数,数i出现的次数为n/i-n/(i+1),对答案的贡献为(n/i-n/(i+1))*i. 对于sqrt后边的数,可以直接由n/i获得,并且一定只出现一 ...

  9. nodejs一些比较实用的命令

    在学习node的时候是从express开始的,在express中有一个generate,如果在机器上面全局的安装了express-generate的话,可以直接实用[express project_n ...

  10. Windows安装Tesseract-OCR 4.00并配置环境变量

    一.前言 Tesseract-OCR 是一款由HP实验室开发由Google维护的开源OCR(Optical Character Recognition , 光学字符识别)引擎.与Microsoft O ...