熟悉的JSON.stringify() 在浏览器端或服务端,JSON.stringify()都是我们很常用的方法: 将 JSON object 存储到 localStorage 中; POST 请求中的...比 stringify 更快的 stringify 由于 JavaScript 是动态性很强的语言,所以对于一个 Object 类型的变量,其包含的键名、键值、键值类型最终只能在运行时确定。...总结来看,如何得到比 stringify 更快的 stringify 方法呢?...需要先确定对象的结构信息; 根据其结构信息,为该种结构的对象创建“定制化”的stringify方法,其内部实际是通过字符串拼接生成结果的; 最后,使用该“定制化”的方法来 stringify 对象即可。...stringify 函数的具体代码。
这是JS 原生方法原理探究系列的第八篇文章。本文会介绍如何实现 JSON.stringify() 方法。 JSON.stringify() 可以将对象或值转化为 JSON 字符串。...理论上,它可以接受很多种不同的数据类型作为参数,而不同的数据类型,处理和转化的结果也不同。所以在实现这个方法之前,我们先弄清楚具体的处理规则。...throw new Error('存在循环引用') } } }) console.log('不存在循环引用') } 在 JSON.stringify...属性丢失其实就是在遍历对象的时候略过这些属性 在检测循环引用的时候,存在嵌套关系的对象应该共享同一条父级链,所以递归的时候需要把存放父级链的数组传进去;同时,不存在嵌套关系的两个对象不应该共享同一条父级链...最后,我并没有实现 JSON.stringify() 中的 replacer 参数和 space 参数,感兴趣的读者可以在上面代码的基础上进一步拓展。 本文到此结束,感谢你的阅读。
JSON.stringify 基础语法 JSON.stringify(value[, replacer [, space]]) 概念 MDN 中文文档对它的解释如下: JSON.stringify()...我个人觉得是有所不妥的,不妥之处在于“对象或者数组”,因为实际上对于普通的值,我们也可以使用 JSON.stringify,只是我们很少这么用罢了。...JSON.stringify 强大的第二个参数 replacer 这个参数是可选的,可以是一个函数,也可以是一个数组 当是一个函数的时候,则在序列化的过程中,被序列化的每个属性都会经过该函数的转换和处理...to null[1] MDN JSON.stringify()[2] json.stringify()的妙用,json.stringify()与json.parse()的区别[3] 你不知道的 JSON.stringify...[3] json.stringify()的妙用,json.stringify()与json.parse()的区别: https://www.cnblogs.com/echolun/p/9631836.
JSON.stringify() JSON.stringify()九大特性 第一个特性 对于undefined、任意的函数以及symbol三个特殊的值分别作为对象属性的值、数组元素、单独的值时JSON.stringify...undefined、任意的函数以及symbol被JSON.stringify()作为单独的值进行序列化时都会返回undefined。...// "["aaa",null,null,null,"eee"]" 正如我们在第一特性所说,JSON.stringify()序列化时会忽略一些特殊的值,所以不能保证序列化后的字符串还是以特定的顺序出现(...) ); // "{"y":"stringify"}" 第八大特性 我们都知道实现深拷贝最简单粗暴的方式就是序列化:JSON.parse(JSON.stringify()),这个方式实现深拷贝会因为序列化的诸多特性从而导致诸多的坑点...": "今天在学 JSON.stringify()", // "emotion": "like shit" // }" 上面代码一眼就能看出第三个参数的作用了,花里胡哨的,其实这个参数还是比较鸡肋的
语法 JSON.stringify(value[, replacer[, space]]) 参数说明: value:必需, 要转换的 JavaScript 值(通常为对象或数组)。...用于转换结果的函数或数组。 如果 replacer 为函数,则 JSON.stringify 将调用该函数,并传入每个成员的键和值。使用返回值而不是原始值。...根对象的键是一个空字符串:""。 如果 replacer 是一个数组,则仅转换该数组中具有键值的成员。成员的转换顺序与键在数组中的顺序一样。...对象的函数,包括 key 和 value。...(obj); document.getElementById("demo").innerHTML = myJSON; 我们可以在执行 JSON.stringify() 函数前将函数转换为字符串来避免以上问题的发生
strJson:",strJson); console.log("JSON.parse(strJson):",JSON.parse(strJson));//json字符串转对象 输出结果: JSON.stringify...let json= {"name":"唐三","age":18,"University":"史莱克学院"}; console.log("json:",json); console.log("JSON.stringify...(json):",JSON.stringify(json));//对象转json字符串 输出结果:
JSON.stringify是我们经常使用的工具函数,第二个可选参数其实也有一些小技巧,本文阐释了可选参数的常见两种使用方式。...数组 使用JSON.stringify()的第二个可选参数,通过传入一个数组来从中抽取特定字段。..."state":{"name":"Tennessee","abbreviation":"TN","population":6403000}},"company":"appendTo"}; JSON.stringify...name: "Pawel", friends: new Set(["Dan", "Pedro", "Mr Gregory"]) }; const dudeStringified = JSON.stringify
熟悉的 JSON.stringify() 在浏览器端或服务端,JSON.stringify()都是我们很常用的方法: 将 JSON object 存储到 localStorage 中; POST 请求中的...比 stringify 更快的 stringify 由于 JavaScript 是动态性很强的语言,所以对于一个 Object 类型的变量,其包含的键名、键值、键值类型最终只能在运行时确定。...总结来看,如何得到比 stringify 更快的 stringify 方法呢?...需要先确定对象的结构信息; 根据其结构信息,为该种结构的对象创建“定制化”的stringify方法,其内部实际是通过字符串拼接生成结果的; 最后,使用该“定制化”的方法来 stringify 对象即可。...stringify 函数的具体代码。
", "age" :26 }" 通常,开发人员使用这个 stringify 函数的方式很简单,像上面那样操作就可以。...下面的例子是 JSON.stringify 适用于这种情形的一个样板: // 创建一个示例数据 var session = { 'screens' : [], 'state' : true...:{x:1,y:2}与{y:2,x:1}通过 JSON.stringify 字符串化值不同,但显然他们是重复的对象。...,map方法是一个遍历方法,返回遍历结果组成的数组.将unique对象的键名还原成对象数组 return JSON.parse(u); }) return arr; } 4.stringify...5.实现深拷贝 实际开发中,如果怕影响原数据,我们常深拷贝出一份数据做任意操作,其实使用 JSON.stringify()与 JSON.parse()来实现深拷贝是很不错的选择。
JSON.stringify 基础语法 JSON.stringify(value[, replacer [, space]]) 概念 MDN 中文文档对它的解释如下: JSON.stringify(...简单来说,JSON.stringify() 就是将值转换为相应的 JSON 格式字符串。...JSON.stringify 强大的第二个参数 replacer 这个参数是可选的,可以是一个函数,也可以是一个数组 当是一个函数的时候,则在序列化的过程中,被序列化的每个属性都会经过该函数的转换和处理...值得注意的是,在一开始 replacer 函数会被传入一个空字符串作为 key 值,代表着要被 stringify 的这个对象。...":"25"} 总结 JSON.stringify 在实际应用中确实很方便的解决了我们很多问题,比如简单的深拷贝等。
写在前面 前几天看到前端胖头鱼的一篇文章《就因为JSON.stringify,我的年终奖差点打水漂了》,讲的就是JSON.stringify在工程开发中的应用,线上用户不能提交表单。...本篇文章就将详细谈谈JSON.stringify,并将带着你进行自己手写一个JSON.stringify,站在全局考察自己对于各种数据类型理解的深度,和各种极端的边界情况的处理能力。...JSON.stringify() JSON.stringify是日常开发中经常用到的JSON对象中的一个方法,用于将一个 JavaScript 对象或值转换为 JSON 字符串,如果指定了一个 replacer...手撕JSON.stringify() 其实现场手撕代码还是有点麻烦的,需要考虑到对各种类型的数据进行处理,考虑各种边界情况。...,我的年终奖差点打水漂了》 写在最后 我们平时开发中将JSON.stringify应用最多的可能就是浅层的对象进行深拷贝,也就是进行序列化处理。
[bmuwt4me9c.gif] 点击上方蓝色字体,关注我们 最近使用 Vue 写后台管理系统,在做 Tab 组件的持久化时遇到一个问题: localStorage.setItem('tabs',JSON.stringify...() at:1:6 可以看到和我上面说的 Vue 的例子是类似的。...既然是由于循环引用导致的,那我们可以在发生循环引用的地方给切断。 那如何切断呢?...幸好 JSON.stringify 方法提供了便利,语法如下: JSON.stringify(value[, replacer[, space]]) replacer 可以作为一个函数传入,且接受 key...: circular-json (只维护,vue-devtools 内部也使用它) flatted (上面的继承者) json-stringify-safe cycle.js
JSON.stringify是我们经常用到的的一个方法,它主要作用是将 JavaScript 值和对象转换为字符串。...如: JSON.stringify({ foo: "bar" }); // => '{"foo":"bar"}' JSON.stringify(123); // => '123' 但是JS 的许多地方都有问题...对包含循环引用的对象(对象之间相互引用,形成无限循环)执行此方法,会抛出错误 我认为 JSON.stringify 能够返回字符串以外的东西是挺惊讶的。...对 JSON.stringify的官方定义在这里并不正确。...你可以尝试修补 JSON.stringify 的类型,但每个解决方案都有一定的缺点。我建议用自定义类型定义自己的包装器并。
作为一名 JavaScript 开发人员,JSON.stringify() 是用于调试的最常见函数。但是它的作用是什么呢,难道我们不能使用 console.log() 来做同样的事情吗?..."{ "name" : "Prateek Singh", "age" : 26 }" 一般来说,开发人员使用 stringify 函数的场景较为普遍,就像我们在上面做的那样。...但我要告诉你一些隐藏的秘密,这些小秘密会让你开发起来更加轻松。 第二个参数(数组) 是的,stringify 函数也可以有第二个参数。它是要在控制台中打印的对象的键数组。看起来很简单?...当对象变大时,查找属性的难度增加。stringify 函数的第二个参数这时就有用了。让我们重写代码并查看结果。...我希望你能学到 stringify() 的一些基本特征。
作为一名 JavaScript 开发人员,JSON.stringify() 是用于调试的最常见函数。但是它的作用是什么呢,难道我们不能使用 console.log() 来做同样的事情吗?...但我要告诉你一些隐藏的秘密,这些小秘密会让你开发起来更加轻松。 第二个参数(数组) 是的,stringify 函数也可以有第二个参数。它是要在控制台中打印的对象的键数组。看起来很简单?...当对象变大时,查找属性的难度增加。stringify 函数的第二个参数这时就有用了。让我们重写代码并查看结果。...JSON.stringify 返回这个函数的结果并对其进行序列化,而不是将整个对象转换为字符串。参考下面的例子。...我希望你能学到 stringify() 的一些基本特征。
"{ "name" : "Prateek Singh", "age" : 26 }" 一般来说,开发人员使用 stringify 函数的场景较为普遍,就像我们在上面做的那样。...但我要告诉你一些隐藏的秘密,这些小秘密会让你开发起来更加轻松。 第二个参数(数组) 是的,stringify 函数也可以有第二个参数。它是要在控制台中打印的对象的键数组。看起来很简单?...当对象变大时,查找属性的难度增加。stringify 函数的第二个参数这时就有用了。让我们重写代码并查看结果。...JSON.stringify 返回这个函数的结果并对其进行序列化,而不是将整个对象转换为字符串。参考下面的例子。...我希望你能学到 stringify() 的一些基本特征。
在写Tab组件持久化功能时: localStorage.setItem('tabs',JSON.stringify(tabs)) 遇到如下的报错: 看意思应该是产生了循环引用的结构,经查阅资料和实践做个记录...() at:1:6 可以看到和我上面说的Vue的例子是类似的。...既然是由于循环引用导致的,那我们可以在发生循环引用的地方给切断。 那如何切断呢?...幸好JSON.stringify方法提供了便利,语法如下: JSON.stringify(value[, replacer[, space]]) replacer可以作为一个函数传入,且接受key和value...,vue-devtools内部也使用它) flatted (上面库的继承者) json-stringify-safe cycle.js
由于JSON.stringify的错误使用,他负责的其中一个业务模块上线后出现了bug,导致某个页面无法使用,进而影响用户体验,差点让他失去年终奖。 在这篇文章中,我将分享这个悲伤的故事。...然后我们还将讨论 JSON.stringify 的各种功能,以帮助您避免将来也犯同样的错误。 我们现在开始 故事是这样的。 他所在的公司,有一位同事离开了,然后胖头被要求接受离开同事的工作内容。...接着,我们一起来了解一下 JSON.stringify,它为啥那么“厉害”,差点把我朋友的奖金都给弄丢了。...了解一下 JSON.stringify 其实,这个bug主要是因为胖头对JSON.stringify不熟悉造成的,所以,这里我们就一起来分析一下这个内置函数的一些特点。...自己实现 JSON.stringify 理解一个函数的最好方法是自己实现它。
前言 最近发现一个比较好的关于前端的英文博文网站,主要是关于Javascript、Vuejs、React、Angular、CSS的前端网站博文网站,网站地址是:https://alligator.io/...,感兴趣的可以看一下,跟着学习也不错。...本文翻译自JSON.parse() and JSON.stringify() JSON对象,在所有的现代浏览器中是有效的,有两个非常有用的方法用于处理JSON格式的内容:parse和stringify...JSON.stringify()接收一个Javascript对象作为参数,转换它为一个JSON字符串。...JSON.stringify() JSON.stringify()可以接受两个附加参数,第一个是替换函数,第二个是String或Number值,用作返回的字符串中的空格。
这时候,就需要我们将对象转换为字符串进行输出,JSON.stringify() 方法就可以帮我们实现将对象转为字符串的过程。...方法描述 JSON.stringify() 方法将一个 JavaScript 对象或值转换为 JSON 字符串,如果指定了一个 replacer 函数,则可以选择性地替换值,或者指定的 replacer...语法 JSON.stringify(value[, replacer [, space]]) 参数说明: value 将要序列化成 一个 JSON 字符串的值。...在开始时, replacer 函数会被传入一个空字符串作为 key 值,代表着要被 stringify 的这个对象。随后每个对象或数组上的属性会被依次传入。...总结 JSON.stringify() 方法可以通过参数控制输出的数据和格式,灵活应用它会大大提高我们的工作效率。 学习有趣的知识,结识有趣的朋友,塑造有趣的灵魂!
领取专属 10元无门槛券
手把手带您无忧上云