星海

JavaScript · 单选题 · 第 16 题

前端与全栈开发面试 · 第 16 题

关于 JavaScript 中的对象拷贝,下列说法正确的是?

  1. AJSON.parse(JSON.stringify(obj)) 会完整保留 undefined 和函数
  2. BstructuredClone 可以处理循环引用,但不能复制函数
  3. CObject.assign({}, obj) 会递归地深拷贝所有嵌套对象
  4. D展开语法 { ...obj } 得到的是一份完整的深拷贝对象

答案

B B. structuredClone 可以处理循环引用,但不能复制函数

解析

structuredClone 基于结构化克隆算法,支持 Date、Map、Set、循环引用等,遇到函数或 DOM 节点会抛异常。JSON 方式会丢掉 undefined、函数和 Symbol,把 Date 变成字符串,遇到循环引用直接报错。Object.assign 和展开语法都只拷贝第一层,是浅拷贝。

在线刷这套题:即时判分、错题本、闪卡复习,不用登录就能练。