从重写方法调用的Typescript`super`

时间:2017-08-21 11:11:22

标签: angular typescript

我项目中最近发现的问题,这里是示例代码(angular 2.3 context):

export class HttpService extends Http {
    ...
    request(url: string, requestOptions?: RequestOptionsArgs, config: any = {}) { // method overridden
        ...
        return super.request(url, options) // called Http.request()
     }
    getOptions() {
        ...
        super.request(url, options) // called this.request()
    }
}

有人可以解释为什么在第一种情况下从super按预期调用方法,但在第二种情况下从this调用(在调试控制台中找到)?

1 个答案:

答案 0 :(得分:0)

super仍遵循原型继承规则。这意味着它将首先尝试在request中找到HttpService.prototype,并且只有在找不到它时才会在原型链中找到它。

以下是有关此行为的更多信息:http://2ality.com/2015/02/es6-classes-final.html#referring-to-super-properties-in-methods