我项目中最近发现的问题,这里是示例代码(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
调用(在调试控制台中找到)?
答案 0 :(得分:0)
super
仍遵循原型继承规则。这意味着它将首先尝试在request
中找到HttpService.prototype
,并且只有在找不到它时才会在原型链中找到它。
以下是有关此行为的更多信息:http://2ality.com/2015/02/es6-classes-final.html#referring-to-super-properties-in-methods