Javascript 如何访问子类中getter的超类值?
在派生类中访问Javascript 如何访问子类中getter的超类值?,javascript,inheritance,overriding,typescript,Javascript,Inheritance,Overriding,Typescript,在派生类中访问getter的super值似乎不起作用: 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
getter
的super
值似乎不起作用:
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';
}
}
原型继承并没有使这一点变得特别简单。这只是TypeScript继承中的许多“陷阱”之一。TS看起来非常像C,以至于它会愚弄你,让你认为它的行为也像C。有关更多信息,请参阅:-(.谢谢。我有一个外部约束,它是以一个特定模型(层叠打印样式)的形式存在的,该模型大量使用重写属性-这种方法至少让我可以在TS中使用它。