A clonagem de um objeto json e a alteração de valores também modificam o objeto original

Fiquei me perguntando por que isso acontece?

Eu tenho um objeto json armazenado em var myObj:

var myObj = JSON.parse(fs.readFileSync('json/data.json', 'utf8'));

então eu pego um clone do objeto original:

var modObj = myObj;

Depois disso, removo os valores vazios do clone:

cleansedObj = removeEmpty(modObj);

Por que isso também modifica o myObj original e remove valores vazios também?

aqui está a função:

function removeEmpty(obj) {
  Object.keys(obj).forEach(function(key) {
    if (obj[key] && typeof obj[key] === 'object') removeEmpty(obj[key])
    else if (obj[key] === "") delete obj[key]
  });
  return obj;
};

Encontrei uma solução alternativa ao fazer isso, mas parece uma operação desnecessária:

var cleansedObj = JSON.stringify(myObj);
cleansedObj = removeEmpty(JSON.parse(cleansedObj));

Obrigado!

questionAnswers(5)

yourAnswerToTheQuestion