請幫我理解這段代碼。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']);
我預計輸出爲Another person designation: Designation, person designation: undefined
,但讓我吃驚,我發現它是`Another person designation: Designation, person designation: Designation
。
據我anotherPerson
正在擴大person
對象和屬性設置爲anotherPerson
應該是不可見的person
對象。我錯了嗎?或者是這兩個對象都指向相同的位置?
[編輯]
現在甚至有更多的驚喜。
我將以下代碼添加到上面。
person.place = 'XYZ';
console.log(person['place'] + ', ' + anotherPerson['place']); // Expected: XYZ, undefined. Result: XYZ, XYZ.
基於上述結果和答案,我認爲這兩個對象都指的是相同的位置。現在我又增加了幾行
person = undefined;
console.log(anotherPerson['place']) //Expected: error, Result: XYZ. ??!?!?
console.log(person['place']) // Expected: error, Result: error.
有人可以告訴我一些明白這一點嗎? 感謝您的幫助提前
這裏沒有繼承。只有兩個引用同一個對象。 – Cameron 2012-04-27 19:59:51
那你怎麼克隆這個對象並製作一個新對象呢?我和OP一樣,可能會認爲新建立了一個NEW對象。 – DanRedux 2012-04-27 20:01:36
請參閱:http://stackoverflow.com/questions/728360/copying-an-object-in-javascript – 2012-04-27 20:03:47