一、基本数据类型
数据分为基本数据类型(String、Null、Boolean、Undefined、Symbol、Number)和引用数据类型。
基本数据类型的特点:直接存储在栈中的数据。
引用数据类型的特点:存储的是该对象在栈中的引用,真实数据存储在堆中。
引用数据类型在栈中存储了指针,该指针指向堆中该实体的起始地址。当解释器寻找引用值时,会首先检索其在栈中的地址,取得地址后从堆中获得实体。
二、实现深拷贝的两种方式
es5:使用递归方法(遍历对象和数组,知道里边都是基本数据类型,然后再去复制,就是深拷贝)
//定义检测数据类型的功能函数
function checkedType(target){
return Object.prototype.tostring.call(target).slice(8,-1)
}
//实现深度克隆--对象或数组
function clone(target){
//判断拷贝的数据类型
//初始化变量result,成为最终克隆对象
let result,targetType=checkedType(taget);
if(targetType==='object'){
result={};
}else if(targetType==='Array'){
result=[];
}else{
return result
}
//遍历目标数据
for(let i in target) {
//获取遍历数据结构的每一项值。
let value = target[i]
//判断目标结构里的每一值是否存在对象/数组
if(checkedType(value) === 'Object'||checkedType(value) === 'Array') {
//对象/数组里嵌套了对象/数组
//继续遍历获取到value值
result[i] = clone(value)
}
else{ //获取到value值是基本的数据类型或者是函数。
result[i] = value;
}
}
return result
}
es6:Json.parse(Json.stringify(Object));