我有两个班级:
export class A extends B {
private prop1: string;
private prop2: string;
constructor() {
this.prop1 = "A";
this.prop2 = "A";
}
}
export abstract class B {
private prop3: "B";
constructor() {
this.prop3 = "B";
}
}
let a = new A();
let b = new B();
如果我现在执行Object.getOwnProperties(a)
,我也会获得继承类b
的属性。--〉prop1, prop2, prop3
有没有办法只得到prop1
和prop2
,而忽略prop3
,因为它只是一个继承的属性?
我知道那个物体。getOwnProperties(a)是错误的方法,但是有没有其他方法可以只获取baseClass的属性,而不是它的继承类呢?
2条答案
按热度按时间nxagd54h1#
不可能的
当你扩展一个类时,你通过传递子对象作为“this”对象来调用父构造函数。因此,如果你在父类中设置属性,你也会自动在子类中设置它们。
在引擎盖下,他们会这样做:
cwdobuhd2#
不,这是不可能的(除了硬编码要获取的属性名称)。
这些是示例属性,而不是原型继承的属性。
prop1
、prop2
和prop3
在运行时是不可区分的,它们都是对象本身的属性。在示例上创建它们的构造函数没有区别。