我的項目中涉及到JS的原型繼承問題。和抽象的主要問題如下:javascript:有關原型繼承的一個令人困惑的問題
var parentObj = {
value:"parent value",
obj: {
obj: "parent obj value"
}
}
var childObj = Object.create(parentObj)
的文本對象的方式來創建parentObj
,並創建一個基於它childObj
並使其爲原型。
而在第一種情況如下:
childObj.value ="child value"
childObj.obj = {obj:"child obj value"};
console.log(parentObj)
console.log(childObj)
輸出爲:
{ value: 'parent value', obj: { obj: 'parent obj value' } }
{ value: 'child value', obj: { obj: 'child obj value' } }
這個結果去預期。
但對於第二種情況如下:
childObj.value ="child value"
childObj.obj.obj = "child obj value";
console.log(parentObj);
console.log(childObj);
的輸出是:
{ value: 'parent value', obj: { obj: 'child obj value' } }
{ value: 'child value' }
的parentObj
被改變。這個結果對我來說有點困惑,有什麼幫助?
我認爲這是唯一的孩子對象返回「孩子OBJ值」。 你能再請檢查一次嗎?或者檢查childObj .__ proto__,它會顯示parentObj。 – Nitesh
@Nitesh,我確認了我發佈的結果。 –
讀取'childObj.obj'屬性使用原型繼承並獲得'parent.obj'。此時,'childObj.obj'和'parentObj.obj'是對同一個對象的引用,所以對這個對象的修改都可以通過這兩種方法看到。 –