Có phải chỉ cần dùng lệnh gán (newObj = oldObj) là xong?
Câu trả lời không đơn giản như vậy, newObj và oldObj vẫn liên kết với nhau, muốn thay đổi giá trị trong newObj mà không ảnh hưởng đến oldObj cách đơn giản nhất là dùng Object.assign() - một hàm trong ECMAScript 2015 (ES6):
var newObj = Object.assign({}, oldObj);
Ví dụ làm rõ vấn đề:
var oldObj = {a: 123}
var newObj = oldObj;
newObj.a = 456;
console.log("oldObj.a is changed to: "+oldObj.a); //oldObj.a is changed to: 456
newObj = Object.assign({},oldObj);
newObj.a = 789;
console.log("oldObj.a is still: "+oldObj.a); //oldObj.a is still : 456