const type = obj => {
const toString = Object.prototype.toString;
const map = {
'[object Array]': 'array',
'[object Object]': 'object',
};
return map[toString.call(obj)];
};
const deepClone = data => {
const t = type(data);
let o, i, length;
if (t === 'array') {
o = [];
for (i = 0, length = data.length; i < length; i++) {
o.push(deepClone(data[i]));
}
return o;
}
if (t === 'object') {
o = {};
for (i in data) {
if (Object.prototype.hasOwnProperty.call(data, i)) {
o[i] = deepClone(data[i]);
}
}
return o;
}
else {
return data;
}
};
const arr = [
{
name: 'ljs',
age: 28
},
{
name: 'hxxx',
age: 30
}
];
console.log(arr);
const arrDeep = deepClone(arr);
arrDeep[1].age = 40;
const arrJson = JSON.parse(JSON.stringify(arr));
arrJson[1].age = 50;
console.log(arrDeep);
console.log(arrJson);
console.log(arr);
console