Por favor, ayúdame a comprender este fragmento de código.Javascript object inheritance
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']);
que esperaba que la salida sea Another person designation: Designation, person designation: undefined
pero para mi sorpresa, me pareció que estaba `Another person designation: Designation, person designation: Designation
.
Según me anotherPerson
está extendiendo person
objeto y propiedades ajustado a anotherPerson
no debe ser visible a person
objeto. ¿Me equivoco aquí? ¿O es que ambos el objeto apuntan a la misma ubicación?
[EDIT]
Ahora bien, hay muchas más sorpresas.
Agregué el siguiente código a lo anterior.
person.place = 'XYZ';
console.log(person['place'] + ', ' + anotherPerson['place']); // Expected: XYZ, undefined. Result: XYZ, XYZ.
Con base en el resultado y respuestas anteriores pensé que ambos objetos se refieren a la misma ubicación. Ahora agregué algunas líneas más
person = undefined;
console.log(anotherPerson['place']) //Expected: error, Result: XYZ. ??!?!?
console.log(person['place']) // Expected: error, Result: error.
¿Puede alguien arrojar algo de luz sobre mí para entender esto? Gracias por su ayuda de antemano
No hay herencia aquí. Solo dos referencias al mismo objeto. – Cameron
Entonces, ¿cómo puedes clonar el objeto y crear uno nuevo? Yo, como el OP probablemente, supuse que lo nuevo sería un NUEVO objeto. – DanRedux
Ver: http://stackoverflow.com/questions/728360/copying-an-object-in-javascript –