堆栈内存+闭包作用域
堆:存储引用类型值的空间
栈:存储基本类型值和指定代码的环境
答案:培训,对象的key数字和字符串等效
答案:珠峰,Symbol的特点,都是唯一的
答案:培训,key会转化成字符串[Obejct object]
答案:‘4’,alert弹出的会转化成字符串
答案:‘1’ ‘4’。
深拷贝浅拷贝
引用数据类型一般的操作,如直接赋值,展开运算符都是进行了浅拷贝
如果引用数据类型结构只有一层,可以用循环来进行深拷贝,或者用JSON.stryfing 来进行深拷贝。
但使用转化为字符串的办法,当咱们数据里有函数以及正则的时候,会出现问题,所以这种方法是有局限性的。
我们可以利用一个第三方的包来进行深拷贝,lodash里提供了进行深拷贝的api。
我们来简单的实现的实现一个深拷贝函数。
function deepCopy(obj) {
let newObj = new Object();
if (typeof obj !== "object") return obj;
if (typeof obj == null) return null;
if (obj instanceof RegExp) {
return new RegExp(obj);
}
if (obj instanceof Date) {
return new Date(obj);
}
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
newObj[key] = deepCopy(obj[key]);
}
}
}