Дана следующая примерная структура класса:
class matter {
constructor(atomicNumber) {
this.atomicNumber = atomicNumber;
}
}
class stone extends matter {
constructor(atomicNumber, mohsHardness) {
super(atomicNumber);
this.mohsHardness = mohsHardness;
}
showProperties() {
console.log(Object.getOwnPropertyNames(this));
}
}
class gem extends stone {
constructor(atomicNumber, mohsHardness, carat) {
super(atomicNumber, mohsHardness);
this.carat = carat;
}
}
let chunk = new gem(6, 10, 1);
chunk.showProperties();
Вывод функции Object.getOwnPropertyNames
, как и ожидалось,
['atomicNumber', 'mohsHardness', 'carat']
Как получить только свойства «родительских» классов,как было бы
['atomicNumber', 'mohsHardness']
Если я заменю функцию следующим образом:
showProperties() {
const parentClass = Object.getPrototypeOf(Object.getPrototypeOf(this));
console.log(Object.getOwnPropertyNames(parentClass));
}
Я получу результат
['constructor', 'showProperties']
Это оставляет меня в растерянности. Может быть, есть аналог Object.prototype.hasOwnProperty?