0

我在 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对象,但未定义。servicerequestversion

谁能帮我弄清楚如何从 wms111 访问正确的属性?

非常感谢任何帮助。

4

2 回答 2

2

这应该使它按预期工作:

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

而不是定义一个全新的属性,只需覆盖孩子中应该不同的属性。

这是在行动:http: //jsfiddle.net/Wd9vE/1/

于 2011-09-11T02:03:41.383 回答
0

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

于 2011-09-11T01:45:56.540 回答