【发布时间】:2018-09-10 20:20:40
【问题描述】:
假设我想删除 JS 对象中的一个属性
const source = {
nestA: {
nestB: {
nestC: 'deleteMe'
}
}
}
const clone = {}
clone.nestA = {...source}.nestA
delete clone.nestA.nestB
console.log(source)
执行以上脚本
期望:source 保持不变
实际:source 将变为 {}
但是,如果我只做delete clone.nestA,source 将保持不变
问题:delete clone.nestA.nestB 怎么会影响source。但是delete clone.nestA 没有?
【问题讨论】:
-
{...source}.nestA没有意义,你可以(应该)只使用source.nestA。 -
展开语法赋值不会进行深拷贝。
-
您的问题是什么?你明白为什么会这样吗?
-
在 Windows 10 上的版本 69.0.3497.81(官方版本)(64 位)中,
source是{ nestA: {} },而不是{}。
标签: javascript ecmascript-6 babeljs