我尝试用structuredClone()创建一个对象的副本,然后将其与原始对象进行比较。
structuredClone()
const util = require('util'); function A() {} let obj = { key: new A() }; let copy = structuredClone(obj); console.log(util.isDeepStrictEqual(obj, copy));
字符串我期待true,但收到false。你能解释一下原因吗?
true
false
q3aa05251#
原因是structuredClone无法克隆类或函数,因此您的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对象
1条答案
按热度按时间q3aa05251#
原因是
structuredClone
无法克隆类或函数,因此您的A {}在克隆对象中变为{}。示例如下:
字符串
这表明:
型
正如你所看到的,副本不再是一个A示例...是纯JavaScript对象