我在JavaScript中使用原型继承并遇到了一个我无法弄清楚的问题。许多JS继承示例显示从sub访问super的成员,但我需要从super访问sub的成员。
我正在构建一个性能测试映射Web服务的工具。我想支持多个版本的WMS协议。我希望尽可能将所有共享功能/属性保留在WMS基类中,并且只在必要时提供特定的版本实现细节。我的WMS v1.1.1功能如下所示:
function wms111() {
this.version = '1.1.1';
}
wms111.prototype = new wms();
我的wms功能(简短版)如下:
function wms() {
var that = this;
this.HTTPMethod = 'GET';
this.descriptionParameters = {
service: 'wms',
version: that.version,
request: 'getcapabilities'
};
}
然后我通过像
这样的调用来测试它var service = new wms111();
var descriptionParameters = service.descriptionParameters;
我得到了descriptionParameters
对象,其中service
和request
属性已正确定义,但version
未定义。
任何人都可以帮我弄清楚如何从wms111访问正确的属性吗?
任何帮助都非常感激。
答案 0 :(得分:2)
这应该使它按预期工作:
function wms111() {
this.descriptionParameters.version = '1.1.1';
}
不要定义一个全新的属性,只需覆盖孩子应该有所不同的属性。
答案 1 :(得分:0)
我可能错了,但我很确定你不能。继承是自上而下的,而不是自下而上的。您可以重载子类中的函数,但这实际上是将超类中的函数视为抽象函数,必须重载。