深拷贝——JSON.stringify()序列化和JSON.prase()反序列化

为什么要使用深拷贝?

1、简单理解

JSON.parse() 和 JSON.stringify() 是 JavaScript 中用于处理 JSON 数据的两个内置方法

使用深拷贝的主要原因是为了创建一个对象或数组的完全独立副本,这样对副本的任何更改都不会影响到原始数据。

在 JavaScript 中,对象和数组都是引用类型。

数据分为基本数据类型 (String, Number, Boolean, Null, Undefined,Symbol) 和引用数据类型

基本数据类型的特点:直接存储在栈 (stack) 中的数据

引用数据类型的特点:存储的是该对象在栈中引用,真实的数据存放在堆内存里

引用数据类型在栈中存储了指针,该指针指向堆中该实体的起始地址。

 JSON.stringify() 并不是将对象和数组转换为基本数据类型,而是将它们转换为 JSON 字符串。这个过程涉及将对象和数组的结构及其包含的基本类型数据(如数字、字符串、布尔值等)序列化为一个文本格式,也就是 JSON 格式的字符串。

JSON.parse() 方法将这个 JSON 字符串反序列化回 JavaScript 对象或数组。由于字符串已经被转换过,JSON.parse() 创建的是一个全新的对象或数组,与原始对象或数组没有任何引用上的联系,因此可以视为一个独立的副本。

2、用法讲解

JSON.stringify()

JSON.stringify() 方法用于将一个 JavaScript 对象或数组转换成 JSON 字符串。它接受三个参数:

  1. value:要转换的 JavaScript 值(通常是对象或数组)。
  2. replacer:可选参数,用于替换或过滤掉某些属性。可以是一个函数或一个数组。
  3. space:可选参数,用于美化输出的 JSON 字符串。可以是一个数字或字符串,表示缩进的空格数。

JSON.parse()

JSON.parse() 方法用于将一个 JSON 字符串转换回 JavaScript 对象或数组。它接受两个参数:

  1. text:要解析的 JSON 字符串。
  2. reviver:可选参数,用于转换解析后的属性。通常是一个函数,可以用来修改或过滤属性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/51789.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

springboot投票管理系统-计算机毕业设计源码33128

摘 要 本文介绍了基于微信小程序和Spring Boot的投票管理系统的设计与实现。该系统结合了移动互联网技术和后端开发框架,旨在为各类组织或活动提供一个高效、便捷、用户友好的在线投票平台。 系统采用微信小程序作为前端展示与交互界面,用户无需下载安装…

图片等比例缩放方案

图片等比例缩放方案 在Web开发时无可避免的需要将图片进行缩放&#xff0c;缩放时需要保证图片不变形&#xff0c;也就是需要等比例缩放。 设定宽度或高度 引入图片时&#xff0c;仅设置图片的width或者是height就可以使另一边自适应&#xff0c;从而实现等比例缩放。 <…

学校如何筹办一场汉字听写大赛

汉字作为中国最宝贵的文化遗产&#xff0c;在五千年的历史长河里&#xff0c;汉字以其浩瀚广博抒写着华夏历史&#xff0c;以其灵秀展示着炎黄之精神。传承汉字文明是我们的使命和主责任。随着科技的发展&#xff0c;现在人们很少用笔书写汉字&#xff0c;导致汉字听写能力普遍…

unity2D游戏开发16弹弓动画

清理动画器 选中PlayerObject,打开Animator,删除原来的四个状态 右键选择Create State |from New Blend Tree; 冲命名为Walk Tree 双击Walk Tree查看Blend Tree Graph 设置属性为2D Simple Directional,再点击加号选择Add Motion Field 添加四个,如图 点击Base Layer

Python面试整理-常用标准库

Python的标准库包含了大量的模块和包,支持各种编程任务,从文件处理、数据序列化,到网络编程等。这些模块预安装在Python中,无需额外安装就可以使用。以下是一些非常有用且常用的标准库模块: 1. os 用于与操作系统进行交互,包括文件和目录管理操作。 import os # 获取当前…

【数据结构】队列(链表实现 + 力扣 + 详解 + 数组实现循环队列 )

Hi~&#xff01;这里是奋斗的明志&#xff0c;很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~~ &#x1f331;&#x1f331;个人主页&#xff1a;奋斗的明志 &#x1f331;&#x1f331;所属专栏&#xff1a;数据结构 &#x1f4da;本系列文章为个人学…

VSCode修改插件与缓存路径—究极版

一. 安装 安装的时候选中添加到资源管理器中&#xff0c;以便后续修改注册表。当然咱们自己手动建也是可以的 这样安装有个缺点&#xff0c;会在空白处、文件右键、目录右键创建通过VSCode打开。 但是在空白处打开就很不爽&#xff0c;所以删除注册表即可 计算机\HKEY_CLASS…

【WEB安全】 PHP基础文件知识完整教学中(超详细)

文章目录​​​​​​​ 1.PHP 文件处理 PHP 操作文件 PHP 文件打开/读取/关闭 ​​​​​​​文件的 复制 删除 重名 ​​​​​​​文件的判断 2.PHP获取文件属性 3.PHP目录操作 4.命名空间 PHP 命名空间可以解决以下两类问题&#xff1a; 5.正则表达式 正则表达…

python编程,设计一个详细的软件 与SADS 相似

软件功能模块&#xff1a; 用户界面模块&#xff08;UI Module&#xff09; 项目管理界面模型构建界面分析和设计界面结果展示和报告生成界面 数据库模块&#xff08;Database Module&#xff09; 材料数据库结构组件数据库设计标准和规范数据库用户项目数据存储 模型构建模块&…

JAVA ORM(对象关系映射)

目录 一、常见的Java ORM框架 1. Hibernate 2. Java Persistence API (JPA) 3. MyBatis 4. Spring Data JPA 二、ORM的优点 1、简化数据库操作 2、跨数据库支持 3、维护性和可读性 三、ORM的缺点 在Java中&#xff0c;ORM&#xff08;对象关系映射&#xff09;是一种…

机器学习 | 评估原理——准确率、精确率、召回率、F1值

Hi&#xff0c;大家好&#xff0c;我是半亩花海。接着上次的模型评估与交叉验证继续更新《白话机器学习的数学》这本书的学习笔记&#xff0c;在此分享准确率、精确率、召回率、F1值相关评估原理。本章的基于前几节已建立的模型进行评估知识的学习&#xff0c;欢迎大家交流学习…

User-Agent(UA)注入

在CTF&#xff08;Capture The Flag&#xff09;竞赛中&#xff0c;User-Agent&#xff08;UA&#xff09;注入是一种利用Web应用程序安全漏洞的攻击方式&#xff0c;特别是在应用程序基于User-Agent字符串来执行某些逻辑或数据库查询时。User-Agent注入通常涉及到在HTTP请求头…

一篇文章掌握Python爬虫的80%

转载&#xff1a;一篇文章掌握Python爬虫的80% Python爬虫 Python 爬虫技术在数据采集和信息获取中有着广泛的应用。本文将带你掌握Python爬虫的核心知识&#xff0c;帮助你迅速成为一名爬虫高手。以下内容将涵盖爬虫的基本概念、常用库、核心技术和实战案例。 一、Python 爬虫…

react中useReducer钩子函数的使用

1.代码展示 import { useReducer } from "react"// 1.定义reducer函数&#xff0c;根据不同action返回不同状态 function reducer(state, action) {console.log(state, action);switch (action.type) {case "INC":return state 1break;case "DEC&qu…

Kconfig 详述

Kconfig 简介 Kconfig 严格来讲是一种编程语言&#xff0c;它拥有自己的语法及结构。正是这些语法和结构组成了menuconfig在用户眼前不同的表现形式。 Kconfig 文件用于定义各种配置选项&#xff0c;例如是否启用某个设备驱动、特定的文件系统支持、网络协议等。每个选项都有…

速记Java八股文——Java 虚拟机篇

前言 分类汇总 10 常见的 Java 虚拟机篇 经典后端面试题&#xff0c;并对题目进行了精炼总结&#xff0c;旨在帮助大家高效记忆&#xff0c;在面试中游刃有余&#xff0c;不至于陷入词穷的窘境。 Java 虚拟机篇 调优命令有哪些&#xff1f; jps&#xff1a;列出当前用户的Java…

【算法】道格拉斯

一、引言 道格拉斯算法是一种用于曲线拟合的数学方法&#xff0c;特别是在处理曲线插值问题时非常有用。道格拉斯-普克算法&#xff08;Douglas-Peucker Algorithm&#xff09;&#xff0c;简称D-P算法&#xff0c;是一种用于简化多边形或折线的高效算法&#xff0c;由David Do…

01 Python环境安装

1.进入官网选择合适的版本&#xff0c;进行下载。Welcome to Python.org&#xff0c;提供了支持不同操作系统的安装包&#xff0c;目前最新版本为Python3.12&#xff0c;但在学习阶段一般不推荐大家使用最新版本的软件&#xff0c;因为对于其他软件需要该环境时&#xff0c;还不…

超13万律师使用的工具,启信宝推出“司法大数据”功能

合合信息旗下的启信宝&#xff0c;作为行业领先的商业查询APP&#xff0c;依托其3亿企业及机构的实时动态数据&#xff0c;涵盖工商、股权、司法、知识产权等多维度信息&#xff0c;推出了“司法大数据”功能。 随着大数据、人工智能技术的发展&#xff0c;律师行业已转型为开…

python——joblib进行缓存记忆化-对计算结果缓存

问题场景 在前端多选框需要选取多个数据进行后端计算。 传入后端是多个数据包的对应路径。 这些数据包需要按一定顺序运行&#xff0c;通过一个Bag(path).get_start_time() 可以获得一个float时间值进行排序&#xff0c;但由于数据包的特性&#xff0c;这一操作很占用性能和时…