如何在子类中访问 getter 的超类值

How can I access the superclass value of a getter in a subclass?

本文关键字:getter 超类 访问 子类      更新时间:2023-09-26

访问派生类中gettersuper值似乎不起作用:

class Foo {
    private _message:string = "Hello,";
    public get Message():string {
        return this._message;
    }
}
class Bar extends Foo {
    public get Message():string {
        return super.Message + " World";
    }   
}
var snafu:Bar = new Bar();
document.write(snafu.Message);
// Expected: "Hello, World"
// Actual: "undefined World"

如何正确覆盖getter并使用super值?

我不一定赞同你继续使用这种方法,但是......

class Bar extends Foo {
    public get Message():string {
        return Object.getOwnPropertyDescriptor(Foo.prototype, 'Message').get.apply(this) +  ' World';
    }   
}

原型遗传并没有使这变得特别简单。