Así que creé un nuevo objeto a partir de un objeto usando el operador de propagación y usé otro objeto para modificar los valores de propiedad.
Pero no estoy seguro de por qué se comporta como una copia profunda en lugar de una copia superficial.
Porque por lo que recuerdo, la forma en que lo hice, debería crear una copia superficial solo en javascript (versión de Nodo 12 o 14).
const modifier = { policyName: "Asa1", test: { a: "As1", bc : [ { a: 1 } ] } } const memberDetails = { policyName: 'policyName', test: { a: "As", bc : [ { a: 0 } ] } }; const generatedMemberDetails = {...memberDetails, ...modifier}; generatedMemberDetails.test.a = "newAs"; generatedMemberDetails.test.bc[0].a = "new0"; console.log(JSON.stringify(memberDetails) ); console.log(JSON.stringify(generatedMemberDetails)); Output: {"policyName":"policyName","test":{"a":"As","bc":[{"a":0}]}} {"policyName":"Asa1","test":{"a":"newAs","bc":[{"a":"new0"}]}}