js对象的深拷贝总结
2019-08-01 00:04
981 查看
1. 简单实现方法
JSON.stringfy()和JSON.parse 即可搞定,但是这种简单粗暴的方法有其局限性。当值为undefined、function、symbol 会在转换过程中被忽略。。。所以,对象值有这三种的话用这种方法会导致属性丢失。
var syb = Symbol('obj'); var person = { name :'tino', say: function(){ console.log('hi'); }, ok: syb, un: undefined } var copy = JSON.parse(JSON.stringify(person)) // copy // {name: "tino"}
2. 递归复制
function deepCopy(obj) { var result = Array.isArray(obj) ? [] : {}; for (var key in obj) { if (obj.hasOwnProperty(key)) { if (typeof obj[key] === 'object' && obj[key]!==null) { result[key] = deepCopy(obj[key]); //递归复制 } else { result[key] = obj[key]; } } } return result; }
3,补充说明
- jquery的一个函数就搞定了: $.extend(true, target, source);
- 还有一些Object.assgin(), 数组的slice()这些,这些只深复制了基本类型数据类型,不是真正意义的深复制;
相关文章推荐
- JS中深拷贝数组、对象、对象数组方法总结
- js数据类型以及深拷贝浅拷贝总结
- js数组、对象深拷贝
- JS对象的深拷贝
- 详细总结js中的json对象
- JS中实现数组和对象的深拷贝和浅拷贝
- js对象的深层 拷贝
- js 对象和数组的深拷贝
- js实现对象深度拷贝
- java和js中遍历数组和对象的总结
- js对象深拷贝与浅拷贝
- js对象、数组知识点总结
- javascript标准库(js的标准内置对象)总结
- JS 对象引用和深拷贝
- 关于对象,对象数组,数组,数组对象直接拷贝、浅拷贝、深拷贝问题的总结
- js实现的对象深拷贝
- 转"js入门·对象属性方法大总结"
- js对象的拷贝复制使用小结
- JS中有关对象的继承以及实例化、浅拷贝深拷贝的奥秘
- 关于JS里面创建对象的一点总结