deepClone

把一个变量的值赋值给另一个变量,如果是引用类型,那么有两种方式    浅拷贝与深拷贝
  
 浅拷贝  引用给newObj  即拷贝指针  即引用传递  本身会改变
 
深拷贝,创建一个新对象,内容给原来需要拷贝的对象的内容是一样的。 类似值传递(值传递是指基本数据类型)  本身不会改变
深拷贝的三种方式
第一种,利用map返回新数组的机制 return userlist.map(item=>item);
第二种,利用Array.from返回新数组的机制 return Array.from(userlist);
第三种,利用 ...解开数组.自己在套上一个新的数组 return [...userlist];
 
 
deepClone: obj => {
var _obj
if (typeof obj === 'object' && obj !== null) {
if (Object.prototype.toString.call(obj) === '[object Object]') {
_obj = {}
for (var key in obj) {
_obj[key] = utils.deepClone(obj[key])
}
return _obj
} else if (Object.prototype.toString.call(obj) === '[object Array]') {
_obj = []
for (var _key in obj) {
_obj[_key] = utils.deepClone(obj[_key])
}
return _obj
}
} else {
return obj
}
},
 
数据
JSON.parse(JSON.stringify())
数组
filter
find
Array.prototype.forEach
对象
Object.assign({}, this.$route.query, { tabName: data.name })

.除了上面两种方法之外,我们还可以借用JQ的extend方法。

$.extend( [deep ], target, object1 [, objectN ] )

 

 

 
posted @ 2018-08-23 10:13  孤魂1715  阅读(117)  评论(0编辑  收藏  举报