JavaScript · 单选题 · 第 16 题
前端与全栈开发面试 · 第 16 题
关于 JavaScript 中的对象拷贝,下列说法正确的是?
- AJSON.parse(JSON.stringify(obj)) 会完整保留 undefined 和函数
- BstructuredClone 可以处理循环引用,但不能复制函数
- CObject.assign({}, obj) 会递归地深拷贝所有嵌套对象
- D展开语法 { ...obj } 得到的是一份完整的深拷贝对象
答案
B B. structuredClone 可以处理循环引用,但不能复制函数
解析
structuredClone 基于结构化克隆算法,支持 Date、Map、Set、循环引用等,遇到函数或 DOM 节点会抛异常。JSON 方式会丢掉 undefined、函数和 Symbol,把 Date 变成字符串,遇到循环引用直接报错。Object.assign 和展开语法都只拷贝第一层,是浅拷贝。