数据类型
- undefined ---------- 未定义 Undefined
- boolean ------------ 布尔值 Boolean
- string -------------- 字符串 String
- number ------------ 数值类型 Number
- object ------------- 对象 Object
- null --------------- 空 Null
- symbol ------------ Symbol es6新增的
深浅拷贝
js数据类型分为
基本数据类型:Undefined、Null、Boolean、Number、String,Symbol
引用数据类型 :Object
浅拷贝指的是将内存储存的 引用类型 数据的指针赋给新对象,原数据类型改变,两者都会改变。(
例如:a改变值 d也改变了
深拷贝指的将 基本类型 赋给新变量,它是对值的拷贝,相当于产生的是新值,原先的值改变不会对其产生影响。
例如:下面a的改变不会对c产生影响
下面是一个深拷贝的函数
/**
* 深拷贝
* @param {*} target 拷贝对象
*/
const deepClone = target => {
// 如果当前需要深拷贝的不是一个对象的话
if (typeof target === "object") return target;
let result;
if (Array.isArray(target)) {
result = [];
for (let i in target) {
// 递归克隆数组中的每一项
let item =
typeof target[i] === "object" ? deepClone(target[i]) : target[i];
result.push(item);
}
} else if (target === null) {
result = null;
} else if (target.constructor === RegExp) {
result = target;
} else {
// 否则是普通对象,直接for in循环,递归赋值对象的所有值
result = {};
for (let i in target) {
let item =
typeof target[i] === "object" ? deepClone(target[i]) : target[i];
result[i] = deepClone(item);
}
}
return result;
};