当前位置:首页 > 科技  > 软件

一篇文章带你了解JavaScript的Storage接口

来源: 责编: 时间:2024-05-23 17:07:25 270观看
导读一、概念Storage 接口用于脚本在浏览器保存数据。两个对象部署了这个接口:window.sessionStorage和window.localStorage。二、属性和方法1. Storage.setItem()Storage.setItem()方法用于存入数据。它接受两个参数,第一

一、概念

Storage 接口用于脚本在浏览器保存数据。两个对象部署了这个接口:window.sessionStorage和window.localStorage。bXO28资讯网——每日最新资讯28at.com

bXO28资讯网——每日最新资讯28at.com

二、属性和方法

1. Storage.setItem()

Storage.setItem()方法用于存入数据。它接受两个参数,第一个是键名,第二个是保存的数据。如果键名已经存在,该方法会更新已有的键值。该方法没有返回值。bXO28资讯网——每日最新资讯28at.com

window.sessionStorage.setItem('key', 'value');window.localStorage.setItem('key', 'value');

bXO28资讯网——每日最新资讯28at.com

注:bXO28资讯网——每日最新资讯28at.com

Storage.setItem()两个参数都是字符串。如果不是字符串,会自动转成字符串,再存入浏览器。bXO28资讯网——每日最新资讯28at.com

window.sessionStorage.setItem(3, { foo: 1 });window.sessionStorage.getItem('3') // "[object Object]"

bXO28资讯网——每日最新资讯28at.com

代码解析:bXO28资讯网——每日最新资讯28at.com

setItem方法的两个参数都不是字符串,但是存入的值都是字符串。bXO28资讯网——每日最新资讯28at.com

如果储存空间已满,该方法会抛错,写入不一定要用这个方法,直接赋值也是可以的。bXO28资讯网——每日最新资讯28at.com

2. Storage.getItem()

Storage.getItem()方法用于读取数据。它只有一个参数,就是键名。如果键名不存在,该方法返回null。bXO28资讯网——每日最新资讯28at.com

window.sessionStorage.getItem('key')window.localStorage.getItem('key')

键名应该是一个字符串,否则会被自动转为字符串。bXO28资讯网——每日最新资讯28at.com

3. Storage.key()

Storage.key()接受一个整数作为参数(从零开始),返回该位置对应的键值。bXO28资讯网——每日最新资讯28at.com

window.sessionStorage.setItem('key', 'value');window.sessionStorage.key(0) // "key"

bXO28资讯网——每日最新资讯28at.com

结合使用Storage.length属性和Storage.key()方法,可以遍历所有的键。bXO28资讯网——每日最新资讯28at.com

for (var i = 0; i < window.localStorage.length; i++) {    console.log(localStorage.key(i));}

bXO28资讯网——每日最新资讯28at.com

三、Storage 事件

Storage 接口储存的数据发生变化时,会触发 storage 事件,可以指定这个事件的监听函数。bXO28资讯网——每日最新资讯28at.com

window.addEventListener('storage', onStorageChange);

监听函数接受一个event实例对象作为参数。这个实例对象继承了 StorageEvent 接口,有几个特有的属性,都是只读属性。bXO28资讯网——每日最新资讯28at.com

属性bXO28资讯网——每日最新资讯28at.com

解析bXO28资讯网——每日最新资讯28at.com

StorageEvent.keybXO28资讯网——每日最新资讯28at.com

字符串,表示发生变动的键名。如果 storage 事件是由clear()方法引起,该属性返回null。bXO28资讯网——每日最新资讯28at.com

StorageEvent.newValuebXO28资讯网——每日最新资讯28at.com

字符串,表示新的键值。如果 storage 事件是由clear()方法或删除该键值对引发的,该属性返回null。bXO28资讯网——每日最新资讯28at.com

StorageEvent.oldValuebXO28资讯网——每日最新资讯28at.com

字符串,表示旧的键值。如果该键值对是新增的,该属性返回null。bXO28资讯网——每日最新资讯28at.com

StorageEvent.storageAreabXO28资讯网——每日最新资讯28at.com

对象,返回键值对所在的整个对象。也说是说,可以从这个属性上面拿到当前域名储存的所有键值对。bXO28资讯网——每日最新资讯28at.com

StorageEvent.urlbXO28资讯网——每日最新资讯28at.com

字符串,表示原始触发 storage 事件的那个网页的网址。bXO28资讯网——每日最新资讯28at.com

如果非要在同一个网页中监听怎么办?

重写localStorage的方法, 抛出自定义的事件bXO28资讯网——每日最新资讯28at.com

<!DOCTYPE html><html>    <head lang="en">        <title>A</title>    </head>    <body>        <script>            var orignalSetItem = localStorage.setItem;            localStorage.setItem = function(key, newValue) {                var setItemEvent = new Event("setItemEvent");                setItemEvent.newValue = newValue;                window.dispatchEvent(setItemEvent);                orignalSetItem.apply(this, arguments);            }            window.addEventListener("setItemEvent", function(e) {                alert(e.newValue);            });            localStorage.setItem("nm", "1234");</script>    </body></html>

bXO28资讯网——每日最新资讯28at.com

注:bXO28资讯网——每日最新资讯28at.com

如果浏览器只打开一个窗口,可能观察不到这个事件。bXO28资讯网——每日最新资讯28at.com

比如同时打开多个窗口,当其中的一个窗口导致储存的数据发生改变时,只有在其他窗口才能观察到监听函数的执行。可以通过这种机制,实现多个窗口之间的通信。bXO28资讯网——每日最新资讯28at.com

四、总结

本文基于JavaScript 基础。介绍了相关的属性和方法。通过案例的分析分步进行讲解。介绍了Storage 事件在实际的应用,在实际应用中遇到的难点,提过有效的解决方案。bXO28资讯网——每日最新资讯28at.com

欢迎大家积极尝试,有时候看到别人实现起来很简单,但是到自己动手实现的时候,总会有各种各样的问题,切勿眼高手低,勤动手,才可以理解的更加深刻。bXO28资讯网——每日最新资讯28at.com

代码很简单,希望对你学习有帮助。bXO28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-90337-0.html一篇文章带你了解JavaScript的Storage接口

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 欧洲也要打造自己的“SpaceX”,欧空局选定两家公司为国际空间站提供商业货运服务

下一篇: yolov部署到iPhone或终端实践全过程

标签:
  • 热门焦点
  • 7月安卓手机性能榜:红魔8S Pro再夺榜首

    7月份的手机市场风平浪静,除了红魔和努比亚带来了两款搭载骁龙8Gen2领先版处理器的新机之外,别的也想不到有什么新品了,这也正常,通常6月7月都是手机厂商修整的时间,进入8月份之
  • CSS单标签实现转转logo

    转转品牌升级后更新了全新的Logo,今天我们用纯CSS来实现转转的新Logo,为了有一定的挑战性,这里我们只使用一个标签实现,将最大化的使用CSS能力完成Logo的绘制与动画效果。新logo
  • 一文看懂为苹果Vision Pro开发应用程序

    译者 | 布加迪审校 | 重楼苹果的Vision Pro是一款混合现实(MR)头戴设备。Vision Pro结合了虚拟现实(VR)和增强现实(AR)的沉浸感。其高分辨率显示屏、先进的传感器和强大的处理能力
  • 一年经验在二线城市面试后端的经验分享

    忠告这篇文章只适合2年内工作经验、甚至没有工作经验的朋友阅读。如果你是2年以上工作经验,请果断划走,对你没啥帮助~主人公这篇文章内容来自 「升职加薪」星球星友 的投稿,坐
  • 十个简单但很有用的Python装饰器

    装饰器(Decorators)是Python中一种强大而灵活的功能,用于修改或增强函数或类的行为。装饰器本质上是一个函数,它接受另一个函数或类作为参数,并返回一个新的函数或类。它们通常用
  • 之家push系统迭代之路

    前言在这个信息爆炸的互联网时代,能够及时准确获取信息是当今社会要解决的关键问题之一。随着之家用户体量和内容规模的不断增大,传统的靠"主动拉"获取信息的方式已不能满足用
  • 小米MIX Fold 3下月亮相:今年唯一无短板的全能折叠屏

    这段时间以来,包括三星、一加、荣耀等等有不少品牌旗下的最新折叠屏旗舰都有新的进展,其中荣耀、三星都已陆续发布了最新的折叠屏旗舰,尤其号荣耀Magi
  • 最薄的14英寸游戏笔记本电脑 Alienware X14已可以购买

    2022年1月份在国际消费电子展(CES2022)上首次亮相的Alienware新品——Alienware X14现在已经可以购买了,这款笔记本电脑被誉为世界上最薄的 14 英寸游戏笔
  • 英特尔Xe HPG游戏显卡:拥有512EU,单风扇版本

    据10 月 30 日外媒 TheVerge 消息报道,英特尔 Xe HPG Arc Alchemist 的正面实被曝光,不仅拥有 512 EU 版显卡,还拥有 128EU 的单风扇版本。另外,这款显卡 PCB
Top