Per favore aiutami a capire questo pezzo di codice.ereditarietà di oggetti 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']);
mi aspettavo l'uscita di essere Another person designation: Designation, person designation: undefined
ma con mia sorpresa ho trovato che fosse `Another person designation: Designation, person designation: Designation
.
Secondo me anotherPerson
sta estendendo person
oggetto e le proprietà impostata anotherPerson
non dovrebbero essere visibili person
oggetto. Ho sbagliato qui? O è che entrambi gli oggetti puntano alla stessa posizione?
[EDIT]
Ora ci sono ancora più sorprese.
Ho aggiunto il seguente codice a quanto sopra.
person.place = 'XYZ';
console.log(person['place'] + ', ' + anotherPerson['place']); // Expected: XYZ, undefined. Result: XYZ, XYZ.
Sulla base dei risultati e delle risposte di cui sopra ho pensato che entrambi gli oggetti si riferiscono alla stessa posizione. Ora ho aggiunto poche altre righe
person = undefined;
console.log(anotherPerson['place']) //Expected: error, Result: XYZ. ??!?!?
console.log(person['place']) // Expected: error, Result: error.
Qualcuno può farmi un po 'di luce per capirlo? Grazie per il vostro aiuto in anticipo
Non c'è eredità qui. Solo due riferimenti allo stesso oggetto. – Cameron
Quindi come si può clonare l'oggetto e crearne uno nuovo? Io, come l'OP probabilmente, ho pensato che il nuovo avrebbe creato un NUOVO oggetto. – DanRedux
Vedere: http://stackoverflow.com/questions/728360/copying-an-object-in-javascript –