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使用场景的资料请关注脚本之家其它相关文章!

相关文章

  • js实现转动骰子模型

    js实现转动骰子模型

    这篇文章主要为大家详细介绍了js实现转动骰子模型,自动随机生成骰子数的模型,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-10-10
  • firefox firebug中文入门教程 脚本之家新年特别版

    firefox firebug中文入门教程 脚本之家新年特别版

    最近看了一篇文章感触颇深,对于firebug作为脚本之家的编辑经常看的到,但可悲的是没怎么用过,不是不用那个而是不会用,刚好看了一篇基础的文章特别整理下。
    2010-01-01
  • 浅聊一下Javascript中的数据类型和类型转换

    浅聊一下Javascript中的数据类型和类型转换

    在JavaScript中,理解数据类型,如何区分它们,以及它们如何被转换是至关重要的,在这篇文章中,我们将探讨这些主题,以帮助大家巩固JavaScript基础
    2023-08-08
  • JavaScript 事件查询综合

    JavaScript 事件查询综合

    比较全的 js事件,大家可以快速的掌握 js事件效果代码。
    2009-07-07
  • 禁用键盘上的(全局)指定键兼容iE、Chrome、火狐

    禁用键盘上的(全局)指定键兼容iE、Chrome、火狐

    确定你是要禁用全局的还是指定控件,如果是全局的 就只要监听window.keyDown = function(event){.....} 一样一样的,感兴趣的朋友可以了解下哈
    2013-05-05
  • 微信小程序实现多选框功能的实例代码

    微信小程序实现多选框功能的实例代码

    这篇文章主要介绍了微信小程序实现多选框功能及效果,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-06-06
  • JavaScript纯前端实现在线GIF压缩

    JavaScript纯前端实现在线GIF压缩

    这篇文章主要为大家详细介绍了如何利用JavaScript纯前端实现在线GIF压缩工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-03-03
  • javascript 动态创建表格

    javascript 动态创建表格

    这篇文章主要介绍了javascript 动态创建表格,需要的朋友可以参考下
    2015-01-01
  • javascript实现可键盘控制的抽奖系统

    javascript实现可键盘控制的抽奖系统

    这篇文章主要为大家详细介绍了javascript实现可键盘控制的抽奖系统的相关资料,需要的朋友可以参考下
    2016-03-03
  • 一看就懂的i++和++i示例代码详解

    一看就懂的i++和++i示例代码详解

    这篇文章主要介绍了i++和++i区别详解,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-03-03

最新评论