你晓得 JSON.stringify 的意义用途不,若面试时被问到要怎样去作答。网络上八股文式的答案大概是教你这么去回答:
JSON.stringify(value,replacer,space)
它是一种方法,方法的作用是会针对于对象来进行序列化,此方法会拥有三个参数,第一个参数所接收的是要被序列化的对象,这个对象能够接受对象或者数组类型,第二个参数所起到的作用是用于标记那些需要被序列化的属性,它专门接受数组以及函数类型,第三个参数所具备的功能是用于描述序列化之后的缩进字符数量,其目地在于对格式进行美化。当然这般的回应也并非有误,然而面试所考查的更多是众人的实际运用能力以及实战情形,要是仅仅回答八股文的内容,更多的仅仅能够展现众人的背诵能力罢了,所以今日给众人展示 JSON.stringify 的实际运用场景。
场景一:localStorage 的存储
在前端,localStorage 所具备的存储类型只能是接受字符串,并且其结构为 KV,此时,我们试着去模拟存储一个对象的这种场景。
我们能够发觉是存储失败情况的,没办法将整个 obj 存储至 localStorage 里面,所以于这种场景之下,就得运用 JSON.stringify,先把对象序列化而后再开展存储:
我们察觉到如此这般是能够存储成功的,我们仅仅需要将存进去的对象再度开展一回 JSON.parse这个操作:
伴随着整个过程的推进,我们能够把对象存储进去,并且与此同时,还能够提取出来,如此这般,便达成契合要求得结果了。
场景二:对象的深拷贝

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 的一个精妙运用。

CopyrightC 2009-2025 All Rights Reserved 版权所有 芜湖人才网 本站内容仅供参考,不承担因使用信息、外部链接或服务中断导致的任何直接或间接责任,风险自担。如有侵权,请联系删除,联系邮箱:ysznh@foxmail.com 鄂ICP备2025097818号-15
地址: EMAIL:qlwl@foxmail.com
Powered by PHPYun.