function deepClone (obj = {}) {
// 判断不是数组或对象直接返回
if (typeof obj !== 'object' || obj == null) {
console.log('不是对象或者数组')
return obj
};
// 初始化返回结果
let result
if (obj instanceof Array) {
result = []
console.log('数组')
} else {
result = {}
console.log('对象')
};
for (let key in obj) {
console.log(obj[key])
// 保证key不是原型的属性
if (obj.hasOwnProperty(key)) {
// 递归
result[key] = deepClone(obj[key])
}
}
// 返回结果
return result
}
var obj1 = {
aaa: 'aaa',
bbb: 'bbb'
}
var obj2 = deepClone(obj1)
obj2[0] = 'name'
obj2[1] = 'class'
console.log(obj2)
console.log(obj1)
js深拷贝
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 壹 ❀ 引 如何区分深拷贝与浅拷贝,简单点来说,就是假设B复制了A,当修改A时,看B是否会发生变化,如果B也跟着变...