1
我有以下代码javascript对象继承是如何工作的?
var createObj = function (prop1, prop2) {
var obj = {
prop1: prop1,
prop2: prop2
}
Object.defineProperty(obj, "prop3", {
get: function() {
return this.prop1 + ' ' + this.prop2;
},
configurable: true
});
return obj;
}
var createSecObj = function() {
var obj = createObj("prop1", "prop2");
var prop3 = obj.prop3;
Object.defineProperty(obj, "prop3", {
get: function() {
return prop3;
}
});
return obj;
}
我想学习如何Javascript继承工作。
比方说作为
myObj = createSecObj();
然后myObj.prop3的值被记录到控制台
console.log(myObj.prop3) // "prop1 prop2"
创建一个名为MyObj中的对象,然后myObj.prop1变更为“嗒嗒”使用
myObj.prop1 = "blah"
再次,如果myObj.prop3记录到控制台,它会导致“prop1 prop2”。而不是“blah prop2”。
console.log(myObj.prop3) // results "prop1 prop2", expecting "blah prop2"
看起来像obj.prop3仍然引用其父对象。这甚至是什么原因被重新定义在子对象中。有人可以请详细解释一下吗?
谢谢你的回答:)我想重新使用代码createObj,prop3而不重写它作为返回this.prop1 +''+ this.prop2;内部createSecObj.prop3 getter。请考虑这是为了学习的目的。不适用于生产级别的应用:)只想检查事情如何完成:)请原谅我的糟糕英语。 –
如果你只是想引用继承的prop3属性,你可以写'return Object.getPrototypeOf(this).prop3;',但这样做没有意义。看来你不想覆盖这个属性,所以不要这样做。 –