js的数据类型
主要分两大类:基本数据类型和引用数据类型。
基本数据类型有:
Srting/Number/Null/undefine/Boolean 占用内存大小确定,保存在栈内。
引用数据类型:
Object/Array 占用内存大小不确定,保存在堆内。
深拷贝的方法
1. JSON.parse(JSON.stringify(obj))
比较日常又比较dirty的方法,适合json可以解读的数据
2.利用lodash里的_.cloneDeep
import "_" from lodash;
let obj = {name:'zs',age:12};
let obj2 = _.cloneDeep(obj);
obj2.name = 'ls'
console.log(obj,ojb1)
//{name:'zs',age:12},{name:'ls',age:12}
3.jQuery —— $.clone() / $.extend()
4.实现一个深拷贝的方法
function deepCopy (obj) {
var result;
//引用类型分数组和对象分别递归
if (Object.prototype.toString.call(obj) == '[object Array]') {
result = []
for (i = 0; i < obj.length; i++) {
result[i] = deepCopy(obj[i])
}
} else if (Object.prototype.toString.call(obj) == '[object Object]') {
result = {}
for (var attr in obj) {
result[attr] = deepCopy(obj[attr])
}
}
//值类型直接返回
else {
return obj
}
return result
}
网友评论