之前面试的时候,突然问到如何实现深拷贝,作为一个社会主义接班人,能怂吗,撸起袖子写了一个方法出来,主要就是判断数据类型,根据数据类型来返回值
function deepClone(origin) {
if(typeof origin !== 'object') return origin;
if(origin === null) return origin;
if(origin.constructor === Date) return origin;
if(origin.constructor === Object) {
let obj = {}
for(var key in origin) {
if(origin.hasOwnProperty(key)){
obj[key] = typeof origin[key] === 'object' ? deepClone(origin[key]) : origin[key]
}
}
return obj;
}
if(origin.constructor === Array) {
let ary = [];
for(let i = 0; i< origin.length ; i++) {
ary[i] = typeof origin[i] === 'object' ? deepClone(origin[i]) : origin[i]
}
return ary
}
}