JavaScript深拷贝
【JavaScript简单实现一个深拷贝】拷贝之后的数据发生了改变不会影响到被拷贝的数据
// 判断数据是否是一个对象类型
const isObj = (obj) => typeof obj === "object" && obj !== null;
const deepClone = (obj) => {
// 根据被拷贝的数据类型来创建数据类型
const newObj = obj instanceof Array ? [] : {};
// 进行遍历获取每一次的key
for (const item in obj) {// 使用一个临时变量来进行接收
const temp = obj[item];
// 判断临时变量是否是一个对象类型,如果是就继续调用deepClone函数
newObj[item] = isObj(temp) ? deepClone(temp) : temp;
}
return newObj;
};
const arr = [1, 2, 3];
const newArr = deepClone(arr);
console.log(arr, newArr);
// [1,2,3] [1,2,3]newArr[0] = 0;
console.log(arr, newArr);
// [1,2,3] [0,2,3]
推荐阅读
- 如何在没有双花括号冲突的情况下使用Angular.js和Twig
- 使用纯JavaScript编码和解码HTML实体
- JavaScript Battery API简介
- 如何在浏览器(无服务器)中创建文件并使用JavaScript生成下载
- 你可能想开始在项目中应用的10个有用的javascript提示和实践
- 如何使用JavaScript在单击或鼠标事件中从画布获取像素颜色
- JavaScript按位NOT,?运算符
- 如何验证何时在JavaScript中加载了多个图像
- 画布已被跨源数据污染,污染的画布可能无法导出