如果我理解正确,object.hasOwnProperty()
应该在父类的继承属性上返回 false。但是,以下代码对自己的属性和继承的属性都返回 true。
我的理解/代码是不正确还是hasOwnPropery()
不正确?如果是我,如何区分自己的财产和继承的财产?
编辑:我已将我的用例添加到示例代码中。
我希望孩子fromDb()
只会处理自己的属性,相反,它会覆盖父级设置的属性fromDb()
。
class Parent {
parentProp = '';
fromDb(row: {}) {
for (const key of Object.keys(row)) {
if (this.hasOwnProperty(key)) {
if (key === 'parentProp') {
// Do some required data cleansing
this[key] = row[key].toUpperCase()
} else {
this[key] = row[key];
}
}
};
return this;
}
}
class Child extends Parent {
childProp = '';
fromDb(row: {}) {
super.fromDb(row);
for (const key of Object.keys(row)) {
if (this.hasOwnProperty(key)) {
this[key] = row[key];
}
};
return this;
}
}
let row = {
parentProp: 'parent',
childProp: 'child',
}
let childObj = new Child().fromDb(row);
console.log(childObj);
安慰:
Child:
childProp: "child"
parentProp: "parent"