Cách copy object trong javascript (Passing object by value)
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
Nhận xét
Đăng nhận xét