0

JavaScriptでプロトタイプの継承を使用していますが、よくわからない問題が発生しました。多くのJS継承の例は、サブからスーパーのメンバーにアクセスすることを示していますが、スーパーからサブのメンバーにアクセスする必要があります。

パフォーマンステストマッピングWebサービスへのツールを構築しています。WMSプロトコルの複数のバージョンをサポートしたい。すべての共有機能/プロパティを可能な限りWMS基本クラスに保持し、必要な場合にのみ特定のバージョン実装の詳細を提供したいと思います。私のWMSv1.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 に答える