简单记录js 判断数据类型和深拷贝的函数封装~~~
判断数据类型:
/**
* 判断数据类型
* @param {*} data 数据
*/
export const dataType = data => {
let type = Object.prototype.toString.call(data);
switch (type) {
case '[object Array]':
return 'array';
case '[object Object]':
return 'object';
default:
return type;
}
};
深拷贝:
/**
* 深拷贝
* @param {*} srouce 需要拷贝数据
*/
export const cloneDeep = srouce => {
let type = dataType(srouce);
let data = srouce;
if (type === 'array') {
data = [];
for (let i = 0; i < srouce.length; i++) {
data[i] = cloneDeep(srouce[i]);
}
} else if (type === 'object') {
data = {};
for (let key in srouce) {
data[key] = cloneDeep(srouce[key]);
}
} else {
return data;
}
return data;
};
注意:在深拷贝函数中有使用到判断数据类型 dataType 这一函数。