Vui lòng giúp tôi hiểu rõ đoạn mã này.Thừa kế đối tượng Javascript
var person = {
'first-name': 'FirstName',
'last-name': 'LastName',
'gender': 'Male'
};
var anotherPerson = new Object(person);
anotherPerson.desig = 'Designation';
console.log('Another person designation: ' + anotherPerson['desig'] + ', person designation: ' + person['desig']);
Tôi mong đợi đầu ra là Another person designation: Designation, person designation: undefined
nhưng với sự ngạc nhiên của tôi, tôi thấy nó là `Another person designation: Designation, person designation: Designation
.
Theo tôi anotherPerson
được mở rộng person
đối tượng và thuộc tính được đặt thành anotherPerson
không được hiển thị cho đối tượng person
. Tôi có sai ở đây không? Hoặc là cả hai đối tượng đang trỏ đến cùng một vị trí?
[EDIT]
Bây giờ thậm chí có những điều ngạc nhiên hơn.
Tôi đã thêm mã sau vào phần trên.
person.place = 'XYZ';
console.log(person['place'] + ', ' + anotherPerson['place']); // Expected: XYZ, undefined. Result: XYZ, XYZ.
Dựa trên kết quả và câu trả lời ở trên Tôi nghĩ cả hai đối tượng đều đang đề cập đến cùng một vị trí. Bây giờ tôi đã thêm vài dòng hơn
person = undefined;
console.log(anotherPerson['place']) //Expected: error, Result: XYZ. ??!?!?
console.log(person['place']) // Expected: error, Result: error.
Ai đó có thể ném một số ánh sáng trên tôi để hiểu được điều này? Nhờ sự giúp đỡ của bạn trước
Không có thừa kế ở đây. Chỉ hai tham chiếu đến cùng một đối tượng. – Cameron
Sau đó, làm thế nào bạn có thể nhân bản đối tượng và tạo một đối tượng mới? Tôi, giống như OP có lẽ, giả định rằng mới sẽ làm cho một đối tượng mới. – DanRedux
Xem: http://stackoverflow.com/questions/728360/copying-an-object-in-javascript –