JS开发时,有时候希望复制了一个Object后,新复制的Object不会随着老对象的属性修改而跟着修改,所以我们需要深度复制这个Object(DeepClone)
下面我整理并记录下Javasript下深度复制object的各种方法
代码中提及到的originalObject
就是待复制的老的Object,比如var originalObject = {'name': 'Tom', 'age': 8}
,clonedObject
就是复制好的Object
- 我最常用的,最简便的
var clonedObject = JSON.parse(JSON.stringify(originalObject));
利用Json转成文本,再转回JsonObject
- ES6提供的原生方法
var clonedObject = Object.assign({}, originalObject);
- 兼容老的浏览器,自己写复制的方法
function cloneObject(obj) { var clone = {}; for(var i in obj) { if(obj[i] != null && typeof(obj[i]) == "object") clone[i] = cloneObject(obj[i]); else clone[i] = obj[i]; } return clone; }
var clonedObject = cloneObject(originalObject);
- 引入lodash
var clonedObject = _.cloneDeep(originalObject);
- 使用jQuery的情况下
var clonedObject = jQuery.extend(true, {}, originalObject);
- 使用angular
var clonedObject = angular.copy(originalObject);
文章评论