javascript - Hur kan jag komma åt superklassens värde på en getter i en subklass?
Att komma åt super-värdet av en getter i en härledd klass verkar inte fungera:
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"
Hur kan jag korrekt skriva över en getter och använda super-värdet?
Svar #1
Jag förespråkar inte nödvändigtvis att du fortsätter med detta tillvägagångssätt, men...
class Bar extends Foo {
public get Message():string {
return Object.getOwnPropertyDescriptor(Foo.prototype, 'Message').get.apply(this) + ' World';
}
}
Prototypbaserad arv gör inte detta särskilt enkelt.
