提问人:Bakuard 提问时间:7/13/2023 最后编辑:Penny LiuBakuard 更新时间:7/28/2023 访问量:122
通过 structuredClone() 接收的对象副本不等于原始副本
The object copy received via structuredClone() is not equal to the original
问:
我尝试创建一个对象的副本,然后将其与原始对象进行比较。structuredClone()
const util = require('util');
function A() {}
let obj = {
key: new A()
};
let copy = structuredClone(obj);
console.log(util.isDeepStrictEqual(obj, copy));
我期望,但收到了.true
false
你能解释一下原因吗?
答:
2赞
Pipe
7/13/2023
#1
原因是无法克隆类或函数,因此您的 A {} 在克隆对象中变为 {}。structuredClone
例:
const util = require('util');
function A(){ this.property = 8}
let obj = {
key: new A()
};
let copy = structuredClone(obj);
console.log("Obj is:", obj)
console.log("Copy is:", copy)
这表明:
Obj is: { key: A { property: 8 } }
Copy is: { key: { property: 8 } }
正如你所看到的,副本不再是 A 实例......是一个普通的 Javascript 对象
评论