2016-10-19 12 views
7

Tôi gặp sự cố nhỏ khi gán đối tượng trong javascript.Gán giá trị không tham chiếu trong javascript

hãy xem mã mẫu này để tái tạo sự cố của tôi.

var fruit = { 
    name: "Apple" 
}; 

var vegetable = fruit; 
vegetable.name = "potatoe"; 
console.log(fruit); 

nó ghi

Object {name: "potatoe"} 

Làm thế nào tôi có thể gán giá trị không phải là tài liệu tham khảo của một đối tượng để đối tượng khác?

+0

Tạo một bản sao của đối tượng - một trong những cách đơn giản là: 'var rau = JSON.parse (JSON.stringify (trái cây));' – tymeJV

+0

* Làm cách nào tôi có thể gán giá trị không tham chiếu của một đối tượng cho một đối tượng khác? *. Bạn không thể JavaScript không hoạt động như thế. Lựa chọn duy nhất của bạn là sao chép đối tượng như @tymeJV nói. – Liam

+0

Kiểm tra câu hỏi SO này: http://stackoverflow.com/questions/12690107/clone-object-without-reference-javascript – Koen

Trả lời

15

Bạn có thể sử dụng Object.assign:

var fruit = { 
 
    name: "Apple" 
 
}; 
 

 
var vegetable = Object.assign({}, fruit); 
 
vegetable.name = "potatoe"; 
 
console.log(fruit);

+0

Lưu ý, điều này không gán giá trị (như OP muốn) nhưng sao chép nó vào một đối tượng mới. Sự phân biệt tinh tế nhưng đôi khi quan trọng – Liam

+1

bạn có thể giải thích một chút về lệnh gọi 'assign' này không? đối tượng trống đó trong đối số đầu tiên là gì? –

+1

@MubasharAbbas [Xem tại đây] (https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/assign) – Liam

Các vấn đề liên quan