浅谈JS深拷贝(深克隆)

60 阅读1分钟

在JS中,数据类型分为基本数据类型和引用数据类型两种,对于基本数据类型来说,它的值直接存储在栈内存中,而对于引用类型来说,它在栈内存中仅仅存储了一个引用,而真正的数据存储在堆内存中

基础数据类型 undefined,boolean,number,string,null,

引用数据类型 Object 类型、Array 类型、Date 类型、RegExp 类型、Function 类型

判断数据类型方法 typeof instanceof constructor toString

深拷贝方法

	let result;
	if(typeof target === 'object') {
		if(Array.isArray(target)) {
			result = [];
			for(let i in target) {
				result.push(deepClone(target[i]));
			}
		} else if(target === null) {
			result = null;
		} else if(target.constructor === RegExp) {
			result = target;
		} else {
			result = {};
			for(let i in target) {
				result[i] = deepClone(target[i]);
			}
		}
	} else {
		result = target;
	}

	return result;
}