js的数据类型:
基本数据类型: string, boolean, number, undefined, null
引用数据类型: object(array, date, regexp, function)
基本数据类型变量保存在栈中,引用数据类型变量保存在堆中,在栈中保存地址。栈比堆要快。
浅拷贝: let copy = from; copy 和 from中的值改变是同步的。
深拷贝: 互不影响。
引用类型的数据怎么实现深拷贝?
方法一: 用递归的方式拷贝
function deepClone(obj) {
var target = {};
for(var key in obj) {
if (Object.prototype.hasOwnProperty.call(obj, key)) {
if (typeof obj[key] === 'object') {
target[key] = deepClone(obj[key]);
} else {
target[key] = obj[key];
}
}
}
return target;
}
方法二:用JSON的方式拷贝
function (obj) {
let tmp = JSON.stringify(obj);
let result = JSON.parse(tmp);
return result;
}