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

相关文章

  • ES6学习笔记之let、箭头函数和剩余参数

    ES6学习笔记之let、箭头函数和剩余参数

    ES6为我们在函数的使用上也提供了许多的便捷的东西,下面这篇文章主要给大家介绍了关于ES6学习笔记之let、箭头函数和剩余参数的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2022-09-09
  • JavaScript面向对象精要(上部)

    JavaScript面向对象精要(上部)

    这篇文章主要介绍了JavaScript面向对象精要,需要的朋友可以参考下
    2017-09-09
  • JS获取dom 对象 ajax操作 读写cookie函数

    JS获取dom 对象 ajax操作 读写cookie函数

    一些常用的JS (JONEAjax) 获取dom 对象,ajax操作,读写cookie类代码,需要的朋友可以参考下。
    2009-11-11
  • 微信小程序movable-view的可移动范围示例详解

    微信小程序movable-view的可移动范围示例详解

    这篇文章主要介绍了微信小程序movable-view的可移动范围 ,movable-view不管怎么移动都要完全包含住movable-area,也就是说movable-area不能超出movable-view的区域范围,反之亦然,本文通过示例介绍的非常详细,需要的朋友可以参考下
    2022-07-07
  • JS实现点击复选框变更DIV显示状态的示例代码

    JS实现点击复选框变更DIV显示状态的示例代码

    下面小编就为大家分享一篇JS实现点击复选框变更DIV显示状态的示例代码,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-12-12
  • JavaScript自动点击链接 防止绕过浏览器访问的方法

    JavaScript自动点击链接 防止绕过浏览器访问的方法

    下面小编就为大家带来一篇JavaScript自动点击链接 防止绕过浏览器访问的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-01-01
  • js removeChild 方法深入理解

    js removeChild 方法深入理解

    下面小编就为大家带来一篇js removeChild 方法深入理解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-08-08
  • JavaScript中如何判断一个值是否为Null

    JavaScript中如何判断一个值是否为Null

    我们在开发的时候经常会判断一个null值,那么我们该如何去判断呢?下面这篇文章主要给大家介绍了关于JavaScript中如何判断一个值是否为Null的相关资料,需要的朋友可以参考下
    2023-12-12
  • JS实现斐波那契数列的五种方式(小结)

    JS实现斐波那契数列的五种方式(小结)

    这篇文章主要介绍了JS实现斐波那契数列的五种方式(小结),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • 关于JavaScript中的this指向问题总结篇

    关于JavaScript中的this指向问题总结篇

    在小编面试过程中经常会遇到javascript中this指向问题,可以说是前端面试必问,下面小编给大家总结了一下js中this的指向,感兴趣的朋友一起学习吧
    2017-07-07

最新评论