如何深度克隆由Symbol()键索引的嵌套对象?

问题描述 投票:0回答:1

对于通常使用字符串作为键的对象,我们可以使用

JSON.parse(JSON.stringify(myObject))
。 其他 如何使用
Symbol()
作为键深度克隆对象?

注意:

structuredClone({[Symbol()]: 42})
返回
{}
,它也不可用

javascript symbols deep-copy
1个回答
0
投票

使用

Object.getOwnPropertySymbols
迭代和复制符号(如果需要,可以实现递归):

const symbol = Symbol();
const obj = {[symbol]: 42};

const cloned = structuredClone(obj);
for(const symbol of Object.getOwnPropertySymbols(obj)){
  cloned[symbol] = obj[symbol];
}

console.log(cloned[symbol]);

© www.soinside.com 2019 - 2024. All rights reserved.