json字符串,本地存储讲解localstorage 和 sessionstorage及cookie,模板字符串初识

2023-11-20

json字符串

“abc123truelkgsjhgo” 普通字符串

"<h1>hgahgo</h1>" html格式字符串

键值对格式 键和值都需要用双引号去包括
‘“name”:“yasuo”’

json用途:
在网络传输时使用。 比如前后端交互。
不能够传输对象和数组的。
只能通过字符串形式去传输数据。

json对象: json对象是一种轻量级的数据交换格式

json对象严格的语法格式: 键必须使用双引号进行包裹, 如果值是字符串类型,也必须是双引号

json格式的使用方法

JSON.parse()
把json格式的字符串转为js中的数组或对象

JSON.stringify()
把js中的数组或对象转为json字符串

对象:
‘{“属性名”:“属性值”,“属性名2”:“属性值2”,“属性名3”:“属性值3”}’

 var str ='{"name":"亚索","age":"28","skill":"狂风绝息斩"}'//josn格式的字符串
        var  str2=  JSON.parse(str);
        console.log(str2);/ 转为了js中的对象{name: "亚索", age: "28", skill: "狂风绝息斩"}
        console.log(typeof str2);// object

数组:
1.存储数组不是对象。

        var obj = [1,2,3,4]
        var  str=JSON.stringify(obj);
        console.log(str);// 为josn字符串  '[1,2,3,4]'

2.存储数组为对象

 var array = [{
                name: "亚索",
                age: "28",
                skill: "狂风绝息斩"
            },
            {
                name: "劫",
                age: 20,
                skill: "瞬狱影杀阵"
            }
        ]
        var  str2=JSON.stringify(array);
        console.log( str2);//转为josn字符串 '[{"name":"亚索","age":"28","skill":"狂风绝息斩"},{"name":"劫","age":20,"skill":"瞬狱影杀阵"}]'

数字和布尔值可以不用带双引号

对象在转json字符串时,函数会被自动过滤掉。

 var obj = {
            name: "亚索",
            age: "28",
            skill: "狂风绝息斩",
            fn:function(){
                console.log("我是函数");
            }
        }
      var str= JSON.stringify(obj);
       console.log(str);//转为join字符串   '{"name":"亚索","age":"28","skill":"狂风绝息斩"}'

parse() 这个方法会新创建一个对象或数组

var obj = {
            name: "亚索",
            age: "28",
            skill: "狂风绝息斩"
        }
        var str = JSON.stringify(obj);//转为join字符串
        var obj2 = JSON.parse(str);//转为js字符串     parse() 这个方法会新创建一个对象或数组
        obj2.name="虞姬";
        console.log( obj);//  原对象内容不变  {name: "亚索", age: "28", skill: "狂风绝息斩"}
        console.log( obj2);// 因为新创建了所以 {name: "虞姬", age: "28", skill: "狂风绝息斩"}*/
 var parson={
        name:"张三",
        age:"18"
        }
       var parson2=parson;
      //将person指向的地址赋值给person2这个变量
       parson.name="李四";
       console.log( parson);//     对象 {name: "李四", age: "18"}*

当转换错误时
错误信息:语法错误
VM14:1 Uncaught SyntaxError(语法错误): Unexpected token 亚 in JSON at position 8

对象的深拷贝狭义实现

// 对象的深拷贝: 简单粗暴的方式  利用 JSON.parse() 和 JSON.stringify()
    let obj = {
            name: '李四',
            child: {
                name: '张三'
            }
        }
        //JSON.stringify将对象转为转为join字符串,然后parse()转为js中的对象
        //因为 parse() 这个方法会新创建一个对象或数组
    let res = JSON.parse(JSON.stringify(obj))
    console.log(res);
    res.child.name = 'hello'
    console.log(obj);

在这里插入图片描述

localstorage 和 sessionstorage的区别

Web 存储对象 localStorage 和 sessionStorage 允许我们在浏览器上保存键/值对
共同点:
都是将数据存储在本地中
只能存储字符串
区别:
localstorage 永久存储的 除非手动删除
sessionstorage 会话缓存
会话结束时失效
1.代码控制结束
2.浏览器关闭/窗口关闭

 //将数组存储到sessionStorage本地存储-----用法一样
     var session = window.sessionStorage;   
            session.setItem("name","yasuo");
            session["age"]="18";
            session.wo="hello";//这是将数组写入存储的三种方法
    //-------------------------------------------------------------------
            console.log(session.getItem("name"));//yasuo
            // session.removeItem("name")//删除
            // session.clear()//清除全部

还记得有一次使用 localStorage 存储了个数组,却一直显示为 [object,object]

解决办法:

存储对象

window.localStorage.setItem('名称', JSON.stringify(对象数据))

获取对象

let content = JSON.parse(localStorage.getItem('名称'))

删除本地指定存储

sessionStorage.removeItem('你那个叫的名字')   //localStorage也都一样

删除本地所有存储

localStorage.clear();   // sessionStorage也一样

cookie

vue 中 使用 vue-cookie超链接

用来存储浏览器端的本地数据
特点:
1.按照域名来存储的
不同的域名下的cookie数据不共通。
2.有存储的路径
127.0.0.1:8080/a/b.html cookie /a/b /
127.0.0.1:8080/b/b.html cookie /b/b
打开方式
在这里插入图片描述

3.cookie 存储的数据格式
“键1=值1;键2=值2”

4.存储大小
4KB 50条左右
5.时效性:
默认是会话级别
我们可以手动设置cookie的过期时间
6.操作权限
前端可以操作
后端可以操作
7.发送请求时,cookie中的数据会被自动传输到后端

8.cookie只能在域名环境下才可以使用

使用方法:

增 (写入)
document.cookie = “键=值”;
增加时一次只能增加一条
查(读取)
document.cookie
一次时获取cookie中的所有内容

同一域名下
相同名字时,后者会覆盖掉前者
document.cookie = “键=新值”;

没有删除方法,有过期时间
如果要删除,则将该数据的有效期设置为过期即可。

有效期设置:

document.cookie = “键=值;expires=”+日期;

服务器的时间以格林威治事件为准的

toUTCString() 转换为格林威治时间

<script>
        //增------------- 增加时一次只能增加一条
        document.cookie = "num=yase";//
        document.cookie="age=18";
        document.cookie="ji=kuang";
        //查----------------------一次时获取cookie中的所有内容
        console.log(document.cookie);// num=yase; age=18; ji=kuang  
        //改============================================
        document.cookie = "num=虞姬";
        //删------------------------没有删除方法,有过期时间
        //如果要删除,则将该数据的有效期设置为过期即可。
      
        //  document.cookie="num=yase;expires="+new Date("2021/01/20 06:46:50");
        // 服务器的时间以格林威治事件为准的,所以   现在的时间=现在-8小时
        //或者直接转为现在的时间         现在标准为new Date().toUTCString()
        //---------------------------------------------------
        document.cookie="box=zhangsan;expires="+new Date().toUTCString();
    </script>

设置cookie过期时间为现在减10秒

封装cookie函数

<script>
    /**
 * [setCookie 设置 cookie]
 * @author Michael An
 * @DateTime 2019-02-28T10:58:07+0800
 * @param    {[type]}                 name   [变量名,必选]
 * @param    {[type]}                 value  [变量值,必选]
 * @param    {[type]}                 exdays [过期日期,可选]
 */
function setCookie(name, value, exdays) {
  let cookie = name + "=" + value + ";";
  if (exdays) {
    let d = new Date();
   // d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));
   d.setTime(d.getTime()+5*1000);
    console.log(d.toTimeString());
    let expires = "expires=" + d.toGMTString();
    cookie = cookie + ' ' + expires;
  }
  document.cookie = cookie;
}
 
/**
 * [getCookie 获取 cookie]
 * @author Michael An
 * @DateTime 2019-02-28T10:58:12+0800
 * @param    {[type]}                 cname [变量名,必选]
 * @return   {[type]}                 [返回值:变量值(字符串)]
 */
function getCookie(cname) {
  let name = cname + "=";
  let cookie = document.cookie.split(';');
  for(let i = 0, len = cookie.length; i < len; i++) {
    let c = cookie[i].trim();
    if (c.indexOf(name) == 0) {
      return c.substring(name.length, c.length);
    }
  }
  return "";
}
 
/**
 * [checkCookie 查询 cookie]
 * @author Michael An
 * @DateTime 2019-02-28T10:58:16+0800
 * @return   {[type]}       [如果有cookie就显示欢迎界面,没有cookie就设置当前用户的信息]
 */
function checkCookie() {
  let username = getCookie("username");
  if (username != "") {
    alert("Welcome again " + username);
  }
  else {
    username = prompt("Please enter your name:","");
    if (username != "" && username != null) {
      setCookie("username", username, 365);
    }
  }
}
 setCookie("username", "张三", 0.1)
getCookie("username")
checkCookie()
</script>

设置,获取,删除cookie优秀封装–博客链接
以下为课堂|||||||
这小段是为cookie的第三个参数过期时间做准备,要明白意思

<script>
    /效果:  得到时间( 当前的时间减去8个小时,当前的秒数加3s)      
    var exDate = new Date();//获取当前北京时间
   exDate.setHours(exDate.getHours() - 8);//设置    小时减8小时
    exDate.setTime(exDate.getTime() + 1000 * 3);//设置秒数
    console.log(exDate);
</script>
    <!-- 
        设置cookie

        name 
        value
        expires 
     -->
    
</head>

<body>

</body>
<script>
    /**
    * name  键
      value 值
      expires 过期时间   单位:s
    */
    function setCookie(name, value, expires) {
       //setCookie函数的作用,   参数放入cookie历史记录
        if (expires == null) {
            document.cookie = name + "=" + value;
        } else {
            var exDate = new Date();
            exDate.setHours(exDate.getHours() );//设置    小时减8小时
            exDate.setTime(exDate.getTime() + 1000 * expires);//设置秒数     
            document.cookie = name + "=" + value + ";expires =" + exDate;
        }
    }
    // key 键  作用:获取历史记录的值
   function getCookie(key) {
        if (document.cookie.length > 0) {
            var arr = document.cookie.split(";");
          // console.log(arr);["age=18","name=yasuo"]
            for (var i = 0; i < arr.length; i++) {
                var t = arr[i].trim().split("=");
               // console.log(t);["name","yasuo"]
                if (t[0] === key) {
                    return t[1];
                }
            }
        }
        return "";
    }
    setCookie("name", "yasuo");
   setCookie("age", "18");
    console.log(getCookie("name"));//yasuo
</script>

模板字符串初识

模板字符串
ES6之前,拼接字符串使用 +
ES6之后,一种新的字符串定义方式。 ``(反引号) 英文状态下,tab上方那个键位 ‘’
区别:
1.普通字符串 不可以换行的 模板字符串可以换行,且输出时,换行仍有效

2.单引号与双引号不能在字符串中解析变量
模板字符串可以解析${}中的变量

3.兼容性
低版本IE不兼容

 <script>
        var ming="李四";
     //普通字符串拼接 -------------------------换行要+ 
        console.log("我的"+
        "名字是"+
         "ming"+"是最强王者");
   //模板字符串-------------------------------
         console.log(
         `我的名字是${ming}
         是最强
         王者`);      
    </script>

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

json字符串,本地存储讲解localstorage 和 sessionstorage及cookie,模板字符串初识 的相关文章

  • “过滤”JSON 以获得唯一键并获取所有相关值

    找到一个组中所有可能的相关值的最佳方法是什么 var table group a stuff new group a stuff old group b stuff newOld group b stuff old group c stuf
  • 将 Javascript 正则表达式转换为 PHP

    我知道这个问题已经被问了大约十几次 但是从技术上讲 这个问题并不是一个骗局 如果您愿意 请检查其他问题 基本上 我有一个 Javascript 正则表达式来检查用于前端验证的电子邮件地址 并且我使用 CodeIgniter 在后端进行双重检
  • 基于 json 文件动态显示选择、复选框、日期选择器等

    对我之前的问题的补充 我根据 json 文件动态显示输入字段 现在我想根据它们的组显示选择项 复选框和日期选择器 我如何解决这个问题 我需要将这些元素推入computeJSON 但写入例如选择options item selection不管
  • 检测 SVGAnimatedString 的类名

    我在构建 SVG 地图时遇到问题 触发的功能 g 上的 onmouseover 不起作用 我当时用的 window onmouseover function e console log e target className 查看类名是否有问
  • 如何隐藏 URL 中的 ID

    我以前在 Stack Overflow 上见过这类问题 但没有一个真正有帮助 我也用谷歌搜索过 但没有骰子 我想知道如果用户单击选项卡本身是否可以隐藏 URL 中的 ID 这是网页 www planet nu dev new experia
  • 如何将这段 javascript 代码重写为 C++11?

    这是我在 Javascript Definitive Guide 中看到的 javascript 闭包代码 我想把它写成C 11 var uniqueID1 function var id 0 return function return
  • 如何在给定目标索引数组的情况下对数组进行就地排序?

    你如何对给定的数组进行排序arr in place给定目标索引数组ind 例如 var arr A B C D E F var ind 4 0 5 2 1 3 rearrange arr ind console log arr gt B E
  • 从 json 文件加入时添加角色 (autorole)

    我对 JS 相当陌生 为了学习 我决定为 Discord 制作一个机器人 我学到了很多并且正在继续学习 我有一个 autorole 的想法 我知道传统的做法 bot on guildMemberAdd member gt var role
  • 如何禁用向左滚动?

    I got a div 元素 parent 包含多个子元素 item 我想启用滚动父元素一个方向 left OR正确的 否则什么都不会发生 看我的代码 parent scroll function gt gt gt scroll event
  • 根据复选框显示/隐藏输入字段[重复]

    这个问题在这里已经有答案了 如果单击该复选框 它将显示一个输入字段 到目前为止它正在工作 但如果未选中该复选框 它应该隐藏它 我该怎么做 div class checkbox div
  • Firestore——仅获取大型同步集合中已更改的文档

    我已阅读下面的所有问题 但在文档中找不到任何内容来描述如何同步集合和接收only更改集合中的文档 我的同步集合中有超过 500 个文档 使用redux saga firebase 同步集合 https redux saga firebase
  • 如何使用jsPDF设置图像以适合页面宽度?

    有什么办法可以解决这个问题吗 我尝试以毫米为单位设置宽度和高度 如何将其设置为全角 您可以获取 PDF 文档的宽度和高度 如下所示 var doc new jsPDF p mm a4 var width doc internal pageS
  • 如何使用javascript通过类名更改html元素的值

    这是我用来更改 html 元素值的代码 a class classname href Vtech com This text to be chnage a 如何在页面加载瞬间更改此文本 看来你需要添加DOMContentLoaded或者把你
  • 使用XMLHttpRequest自动网页刷新内存泄漏

    问候 我一直在为一些使用 8 位微控制器的硬件开发网络界面 该网页使用 HTML javascript JSON 和 XHR XMLHttpRequest 进行通信 我想做的是创建一个页面 使用 setInterval 使用控制器中的新值每
  • 原型链、构造函数、继承

    我正在玩 javascript 原型 我是新手 所以我有一个小问题 我正在用这个article http mckoss com jscript object htm作为指导 我已经定义了产品和书籍 目的是什么Book prototype c
  • 允许在 Safari 上聊天应用程序使用 audio.play()

    由于苹果禁用了自动播放音频的功能HTMLMedia Element play https developer mozilla org en US docs Web API HTMLMediaElement play在没有用户交互的 java
  • NodeJS 错误堆栈未定义 [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我正在使用节点检查器 我注意到new Error 有未定义的堆栈 如果我将此值分配给一个变量 该变量将显示堆栈未定义 有趣的是 跑步new
  • Kotlin JavaScript 到 TypeScript 定义文件

    我已经找到了ts2kt 库 https github com Kotlin ts2kt这将从任意位置创建 Kotlin 头文件 d ts文件 但是 我想朝相反的方向走 我想构建一个可以编译为 JavaScript 的 Kotlin 库 但我
  • 图像未显示在从 HTML 创建的 PDF 上

    我想动态创建 PDF 这意味着我将从 Google Drive 获取文件 然后将它们放入 HTML 代码中 并尝试从中创建 PDF 一切工作正常 除了图像没有显示 我现在正在做的是 从 HTML 字符串创建 HtmlOutput 获取该 H
  • “x modulo y”的结果是什么?

    引用 ECMAScript 规范第 5 2 节 符号 x modulo y y 必须是有限且非零 计算 值 k 与 y 具有相同的符号 或零 使得 abs k 因此 如果 y 为正 则 x modulo y 的结果 k 为正 无论 x 的符

随机推荐

  • SQL语言---视图操作

    文章目录 前言 一 视图 1 什么是视图 2 建立视图 3 删除视图 二 定义视图 1 建立视图 1 语法格式 2 举例讲解 例子1 建立房间视图 例子2 基于多表建立视图 例子3 基于视图建立视图 例子4 基于表达式的视图 2 删除视图
  • SpringBoot实现前端传入数值Controller层接收为枚举

    定义枚举 import com fasterxml jackson annotation JsonCreator import com fasterxml jackson annotation JsonFormat import lombo
  • ​第一本 Compose 图书上市,联想大咖教你学会 Android 全新 UI 编程

    朱江 现任联想 北京 有限公司 Android 开发工程师 从事 Android 开发工作多年 有丰富的项目经验 负责和参与开发过多款移动应用程序 同时还是多个开源项目的作者 2017 年开始在 CSDN 发表 Android 技术相关博文
  • VLAN技术原理和配置方法

    一 VLAN产生的背景 虚拟局域网 VLAN 是英文Virtual Local Area Network的缩写 随着网络规模不断扩大 网络中的广播报文也随之增加 结果就是使交换机的负担不停的加重 并且一些终端设备也会收到不希望收到的报文 V
  • 12306验证码分割

    首先要从12306上面将验证码爬取下来 保存到C images 下 from PIL import Image import os def get sub img im x y 截出方格图片 assert 0 lt x lt 3 asser
  • HTML+CSS3 5个炫酷的loading

    为了方便大家方便CV 每个loading对应一个html文件 文件下载压缩包 下载地址 https download csdn net download m0 48850204 20432352 spm 1001 2014 3001 550
  • 解决Glide加载图片闪烁的问题(感觉加载了两遍 !!!)

    今天由于项目需求的原因 需要把原来的ViewPager的长方形图片转成圆角图片 一直觉得Glide很强大 应该可以直接设置圆角图片 但是输入 之后并没有找到这个方法 顿时一大片问号飘过 下面来说说遇到的问题 1 之前Glide 3 0 都是
  • 层次聚类在MATLAB中实现

    层次聚类在MATLAB中实现 By Yang Liu 1 第一种方法 1 输入要聚类的数据 2 计算各个样本之间的欧氏距离 3 把距离化成矩阵 矩阵中的元素 X i j X ij Xij 表示第i个样本和第j个样
  • python深度学习之用lightgbm算法实现鸢尾花种类的分类任务实战源码

    本代码以sklearn包中自带的鸢尾花数据集为例 用lightgbm算法实现鸢尾花种类的分类任务 参考来源 https lightgbm readthedocs io en latest Python Intro html usr bin
  • 用户偏好分析

    1 量化用户偏好 首先将用户分类 设定用户对于产品 喜爱 的标准 比如一天浏览产品5次 计算不同分类用户 喜爱 不同产品的人数 例如 分类 A类用户 B类用户 产品1 10 40 产品2 40 10 用户偏好指某类用户更偏好某产品 例如表中
  • 机器学习实战笔记-01概览

    机器学习的主要挑战 1 数据问题 数据量不足 训练数据不具有代表性 需要可泛化的案例 注意采样偏差 数据质量差 错误 异常 缺失 形成了噪音 无关特征 特征工程 选取 提取 创建特征 2 算法问题 过拟合 噪音 模型过于复杂参数过多 欠拟合
  • 2023华为笔试机考题库【等和子数组的最小和/动态规划】

    题目描述 给定一个数组nums 将元素分为若干个组 使得每组和相等 求出满足条件的所有分组中 组内元素和的最小值 输入描述 第一行输入 m 接着输入m个数 表示此数组 数据范围 1 lt M lt 50 1 lt nums i lt 50
  • 2023-02-21 好用的一款十六进制编辑器软件Hex Editor Neo ,以十六进制字节形式查看文件有字节

    一 Hex Editor Neo是一款十六进制编辑器软件 可以在几秒钟内处理大文件的操作 能够帮助用户编辑ASCII 十六进制 十进制 float double和二进制数据的应用程序 感觉比notepad的hex查看功能更强大 用notep
  • 音视频开发开发核心知识+新手入门必看基础知识

    音视频开发是一个广泛的领域 它涉及到多个技术领域 包括音频编解码 视频编解码 媒体容器格式 流媒体传输 音视频处理等 以下是音视频开发的一些基础知识 音频编解码器 音频编解码器是将数字音频信号编码成一种压缩格式 并且能够解码压缩的音频数据以
  • android华为手机开启蓝牙耳机,华为手机如何连接蓝牙耳机? 华为手机连接蓝牙耳机方法教程介绍!...

    我们现在在用手机的时候经常会用到耳机 听歌接电话看视频都离不开耳机 但是有的时候如果觉得耳机插来插去很麻烦就可以尝试用蓝牙耳机 那么知道华为手机怎么连接蓝牙耳机吗 具体的连接方法是怎么样的呢 下面小编就给大家简单介绍一下具体的连接方法吧 连
  • 大数据面试之SQL面试题

    一 提要 作为一名数据工作人员 SQL是日常工作中最常用的数据提取 简单预处理语言 因为其使用的广泛性和易学程度也被其他岗位比如产品经理 研发广泛学习使用 本篇文章主要结合经典面试题 给出通过数据开发面试的SQL方法与实战 二 解题思路 简
  • vue3 通过自定义指令在table中滚动加载数据

    1 在utils文件中新建一个loadMore ts文件 import type Directive App from vue const debounce function func any delay any let timer any
  • Source insight 4.0 暗色主题,模仿Atom one-darkv配色方案

    我是在MAC OS 10 12下使用crossover安装的 在wine环境下装4 0有个无法解决的bug是toolbar非常的宽 所以我取消了 反正用快捷键可以代替 关于wine安装之后界面模糊的问题请参考我这个帖子http blog c
  • 【UGUI】2D头顶血条制作

    前言 近期因为需要制作玩家和敌人头顶的2D血条 查找了很多博客 发现很多都拘束于Canvas的渲染模式必须要设定为ScreenSpace Overlay 还有应该是版本原因 我的是unity2019 1 11f1 用RecttTransfo
  • json字符串,本地存储讲解localstorage 和 sessionstorage及cookie,模板字符串初识

    这里写目录标题 json字符串 json格式的使用方法 对象的深拷贝狭义实现 localstorage 和 sessionstorage的区别 cookie 封装cookie函数 模板字符串初识 json字符串 abc123truelkgs