浅拷贝实现
var Chinese = {
nation:'中国',
japanese:[1,2,3]
};
function extendCopy(obj){
let temp = {}
for(let key in obj){
temp[key] = obj[key]
}
return temp;
}
let obj = extendCopy(Chinese)
//这样的拷贝有一个问题。那就是,如果父对象的属性等于数组或另一个对象,那么实际上,子对象获得的只是一个内存地址,而不是真正拷贝,因此存在父对象被篡改的可能。
深拷贝
递归调用"浅拷贝"
var Chinese = {
nation:'中国',
japanese:[1,2,3]
};
function deepCopy(obj) {
let temp = Array.isArray(obj) ? [] : {}
for (let key in obj){
console.log(obj[key])
temp = isObject(obj[key]) ? deepCopy(obj[key]) : obj[key]
}
return temp
}
function isObject(obj) {
return (typeof obj === 'object'|| typeof obj === 'function') && obj!== null
}
var Chinese = {
nation:'中国',
japanese:'日本'
};
deepCopy(Chinese)