javascript oop访问从基础扩展'class'成员

时间:2011-09-11 01:40:17

标签: javascript prototypal-inheritance

我在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对象,其中servicerequest属性已正确定义,但version未定义。

任何人都可以帮我弄清楚如何从wms111访问正确的属性吗?

任何帮助都非常感激。

2 个答案:

答案 0 :(得分:2)

这应该使它按预期工作:

function wms111() {    
    this.descriptionParameters.version = '1.1.1';
}

不要定义一个全新的属性,只需覆盖孩子应该有所不同的属性。

这里有效:http://jsfiddle.net/Wd9vE/1/

答案 1 :(得分:0)

我可能错了,但我很确定你不能。继承是自上而下的,而不是自下而上的。您可以重载子类中的函数,但这实际上是将超类中的函数视为抽象函数,必须重载。