JS中JSON.stringify使用场景面试精讲

 更新时间:2023年10月16日 09:44:22   作者:Winn  
这篇文章主要为大家介绍了JS中JSON.stringify使用场景面试精讲,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

JSON.stringify 的作用意义

你是否知道 JSON.stringify 的作用意义,当面试被问到该如何回答。网上的八股文答案大概教你这样回答:

JSON.stringify(value,replacer,space)

它是一个用于序列化对象的方法,接受三个参数,第一个参数是要被序列化的对象,接受对象或数组类型。第二个参数用于标记需要序列化的属性,接受数组和函数类型。第三个参数用于描述序列化后的缩进字符数,用于美化格式。当然这样的回答也没有错,不过面试考察的更多是大家的实际应用能力以及实战场景,如果只回答八股文的内容,更多的只能体现大家的背诵能力而已,所以今天给大家呈现 JSON.stringify 的实际应用场景。

场景一:localStorage 的存储

前端 localStorage 中只能接受字符串的存储类型,而且它是一个 KV 的结构,我们尝试模拟存储一个对象这种场景:

我们会发现是存储失败的,我们没有办法把整个 obj 存储到 localStorage 中,所以在这种场景下,我们就需要用到 JSON.stringify,把对象先序列化再进行存储:

我们发现这样是可以存储成功的,我们只需要把存进去的对象再进行一次 JSON.parse:

整个过程我们就可以把对象给存储进去,同时能提取出来,这样就ok了。

场景二:对象的深拷贝

JS 中的对象它都是一个引用的类型。

如上图把obj赋予给objA,当改动objA里面的a属性,本质上其实在obj里面的a属性它也被改动了,那怎么样解决这个问题呢?这里可以利用 JSON.stringify 以及 JSON.parse 给做一次对象的深复制,具体应用是这样的:

我们用 JSON.stringify 序列化一次这个obj,再把它解析出来,最后的结果赋予给objB,这时候我改动objB里面的a属性,但obj里面的属性并没有进行变化,这样的话我们就成功的做了一次深度复制,这也是 JSON.parse 一个巧妙的应用。

场景三:删除对象属性

如果我们需要删除对象中某个属性,也可以利用 JSON.stringify 去实现,比如说下面这个对象我们要把b属性删掉,可以利用  JSON.stringify 的第二个参数去巧妙应用:

第二个参数接受一个方法,方法接受两个参数,一个是key,一个是value,我们可以在里面写逻辑,如果key==='b',这时候我们返回undefine,否则的话我们把 value 返回,这时候我们就可以得到一个没有b属性的一个序列化的字符串,我们再把这个字符串给 JSON.parse 回来,就可以得到消除 b 之后的一个对象,这也是 JSON.stringify 的一个巧妙应用。

以上就是JS中JSON.stringify使用场景面试精讲的详细内容,更多关于JS JSON.stringify使用场景的资料请关注脚本之家其它相关文章!

相关文章

  • 分析javascript中9 个常见错误阻碍你进步

    分析javascript中9 个常见错误阻碍你进步

    这篇文章主要介绍了分析javascript中9 个常见错误阻碍你进步的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下
    2017-09-09
  • Ajax::prototype 源码解读

    Ajax::prototype 源码解读

    Ajax::prototype 源码解读...
    2007-01-01
  • Bootstrap源码解读模态弹出框(11)

    Bootstrap源码解读模态弹出框(11)

    这篇文章主要源码解读了Bootstrap模态弹出框,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12
  • JavaScript中时间日期函数new Date()详解(5种获取时间戳的函数)

    JavaScript中时间日期函数new Date()详解(5种获取时间戳的函数)

    这篇文章主要给大家介绍了关于JavaScript中时间日期函数new Date()的相关资料,主要讲的是JS中5种获取时间戳的函数,new Date()是JavaScript中用于获取当前日期和时间的内置函数,需要的朋友可以参考下
    2024-04-04
  • ts中any和unknow的区别及说明

    ts中any和unknow的区别及说明

    本文介绍了TypeScript中any和unknown类型的使用场景,any类型非常灵活,但可能导致潜在的运行时错误;而unknown类型虽然更严格,但在使用前需要进行类型检查,更安全,在不确定变量类型时,应优先考虑使用unknown以提高代码安全性
    2026-03-03
  • JavaScript中0和

    JavaScript中0和""比较引发的问题

    这篇文章主要介绍了JavaScript中0和""比较引发的问题,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-05-05
  • ES6如何用一句代码实现函数的柯里化

    ES6如何用一句代码实现函数的柯里化

    这篇文章主要介绍了ES6如何用一句代码实现函数的柯里化,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • uni-app中弹窗的使用与自定义弹窗

    uni-app中弹窗的使用与自定义弹窗

    众所周知弹窗在我们实际开发场景中是非常常用的,最近在工作中就遇到了相关需求,所以下面这篇文章主要给大家介绍了关于uni-app中弹窗使用与自定义弹窗的相关资料,需要的朋友可以参考下
    2022-04-04
  • Javascript如何判断数据类型和数组类型

    Javascript如何判断数据类型和数组类型

    这篇文章主要介绍Javascript如何判断数据类型和数组类型,通俗易懂,需要的朋友可以参考下。
    2016-06-06
  • JavaScript 组件之旅(一)分析和设计

    JavaScript 组件之旅(一)分析和设计

    毫无疑问,JavaScript 是一种非常灵活的脚本语言,有时候它像一只难以驯服的野马——你受益于它的灵活性的同时,也要时刻提防它变得失去控制
    2009-10-10

最新评论