在Kyle Simpson的书" 你不了解JS:这个和对象原型"中,他写了关于如何复制对象的主题:
一个子集解决方案是,JSON安全的对象(即,可以序列化为JSON字符串,然后重新解析为具有相同结构和值的对象)可以轻松复制:
Run Code Online (Sandbox Code Playgroud)var newObj = JSON.parse( JSON.stringify( someObj ) );当然,这需要您确保您的对象是JSON安全的.在某些情况下,这是微不足道的.对于其他人来说,这还不够.
什么是"JSON安全"对象?我用JavaScript运行了一些测试,到目前为止大多数事情(数组,数字,字符串,对象)都可以使用上面的行复制,但方法(foo.bar),当试图复制方法时,undefined插入方法的位置,重复的对象.
要使foo<=>JSON.parse(JSON.stringify(foo))为 true,我们必须能够foo以JSON 格式表示表示。
JSON 仅支持:
\n\n\n\n\n数字:带符号的十进制数,可以包含小数部分,并且可以使用指数\xc2\xa0E 表示法,但不能包含像\xc2\xa0NaN 这样的非数字。该格式不区分整数和浮点数。JavaScript 对所有数值使用\xc2\xa0 双精度浮点格式\xc2\xa0,但实现 JSON 的其他语言可能会以不同方式对数字进行编码。
\n
\n\n\n字符串:零个或多个\xc2\xa0Unicode字符的序列。字符串用双引号分隔,并支持反斜杠\xc2\xa0escaping\xc2\xa0语法。
\n
\n\n\n布尔值:值\xc2\xa0true\xc2\xa0或\xc2\xa0false之一
\n
\n\n\n数组:包含零个或多个值的\xc2\xa0有序列表\xc2\xa0,每个值可以是任何类型。数组使用\xc2\xa0方括号\xc2\xa0表示法,元素之间以逗号分隔。
\n
\n\n\n对象:名称/值对的无序集合,其中名称(也称为键)是字符串。由于对象旨在表示\xc2\xa0关联数组,[12]\xc2\xa0建议(尽管不是必需的),[13]\xc2\xa0每个键在对象中是唯一的。对象用\xc2\xa0大括号\xc2\xa0分隔,并使用逗号分隔每一对,而在每对中,冒号\':\'字符将键或名称与其值分开。
\n
\n\n\nnull:空值,使用单词\xc2\xa0null
\n
在 javascript 中, 的概念JSON safe object基本上是指可以无任何损失地以 JSON 格式表示的 javascript 对象。
| 归档时间: |
|
| 查看次数: |
1331 次 |
| 最近记录: |