javascript - JS 对象拷贝问题
黄舟
黄舟 2017-04-11 12:12:40
[JavaScript讨论组]

在做对象拷贝的时候,如果仅考虑对值的拷贝,就比如项目中的列表数据但是存储在一个对象中,我想对该对象进行拷贝的话能否使用JSON的思路,直接把obejct转成json字符串,然后再转成obejct,完成对值的拷贝?这种方法有没有什么弊端?

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全部回复(3)
PHPz

1.JSON这两个方法的兼容性(ie 6/7)
2.这个方法本身存在一些问题
示例代码:

function deepCopy(oldValue) { 
  var newValue
  strValue = JSON.stringify(oldValue)
  return newValue = JSON.parse(strValue)
}

var a = {
  b: 'b',
  c: [1,2,4],
  d: null
}

copy = deepCopy(a)

console.log(a === copy) // false
console.log(a.b === copy.b) // true
console.log(a.c === copy.c) // false
console.log(a.d === copy.d) // true

var o = {
 a: 1,
 b: 2,
 sum: function() { return a + b; }
};

var o2 = JSON.parse(JSON.stringify(o));
console.log(o2);

相关链接:
js深度复制一个对象使用JSON.stringify是最好的办法吗?
javascript deep copy using JSON

PHP中文网

深拷贝不借助外部库的话都是利用JSON中转一下

PHP中文网

这么做对简单对象就是深拷贝,遇到Date、Function这种类型好像不好使。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号