/**
* 深度克隆
* @param {any} value 任意类型的值
*/
function deepClone(value) {
// 非原始值的情况
// 判断数组
if (Array.isArray(value)) {
var clone = [];
for (var i = 0; i < value.length; i++) {
clone[i] = deepClone(value[i]);
}
return clone;
}
// 判断对象
if (typeof value === 'object' && value !== null) {
var clone = {};
for (var k in value) {
clone[k] = deepClone(value[k]);
}
return clone;
}
return value;
}
var o1 = [1, 2, { a: 1, b: [3, 2, 1] }];
var o2 = deepClone(o1);
console.log(o2);
console.log(o2[2] === o1[2]);