deepCopy(obj) {
if (typeof obj !== 'object' || obj === null) {
return obj; // 如果不是对象或者为空则直接返回原始值
}
let copy = Array.isArray(obj) ? [] : {}; // 根据类型创建新的数组或对象
for (let key in obj) {
if (Object.prototype.hasOwnProperty.call(obj, key)) {
if (obj[key] !== null && typeof obj[key] === 'object') {
copy[key] = this.deepCopy(obj[key]); // 递归调用自身处理子属性
} else if (obj[key] !== null) {
copy[key] = obj[key]; // 非 null 值复制到新对象/数组中
}
}
}
return copy;
}
JS 深拷贝
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 壹 ❀ 引 如何区分深拷贝与浅拷贝,简单点来说,就是假设B复制了A,当修改A时,看B是否会发生变化,如果B也跟着变...
- 深拷贝和浅拷贝最根本的区别在于是否是真正获取了一个对象的复制实体,而不是引用,深拷贝在计算机中开辟了一块内存地址用...
- 如果您只是想知道如何实现深拷贝,请直接到页面最下方查找实现方法即可,如果希望了解其中原理,可继续往下阅读。本文转载...