0

簡単に言えば、変数を共有し、独自の変数を持つクラスがたくさんあります。そこで、Resource というスーパークラスと多くのサブクラスを作成しました。問題は、任意の値を設定および取得できるようにしたいということです。コードを簡略化しましたが、これは私ができないことです。スーパークラスを含め、各クラスには多くの変数があり、毎回クラスを再定義したくないことに注意してください。

var MySuperClass = Class.create({
    initialize:function () {
        var a;
        var b;
        var c;  
        //Getters
    this.getA=function () {
        return a;
    };
    this.getB=function () {
        return b;
    };
    this.getC=function () {
        return c;
    };

    //Setters

    this.setA=function (val) {
        a = val;
    };
    this.setB=function (val) {
        b = val;
    };
    this.setC=function (val) {
        c = val;
    };
    //end Setters   
},
sub:function () {
    return this.getA()-this.getB()-this.getC();
}
});

var MyClass = Class.create(MySuperClass, {
  initialize:function () {
        var d;
        var e;
           //Getters
    this.getD=function () {
        return d;
    };
    this.getE=function () {
        return b;
    };
    this.getC=function () {
        return c;
    };

    //Setters

    this.setA=function (val) {
        a = val;
    };
    this.setB=function (val) {
        b = val;
    };
    this.setC=function (val) {
        c = val;
    };
    //end Setters   
},
add:function () {
    return this.getA()+this.getB()+this.getC()+this.getD()+this.getE();
}
});

function test() {
 myclass=new MyClass();
 myclass.setA(1);
 myclass.setB(0);
 myclass.setC(3);
 myclass.setD(2);
 myclass.setE(3);
 var result=myclass.add();
 var result2=myclass.sub();
 alert(result+' '+result2);
}

もちろん、サブクラスはスーパークラスの初期化をオーバーライドしているため、値にアクセスできません。テスト関数から両方にアクセスできるように、サブクラス変数とスーパークラス変数を初期化するにはどうすればよいですか?

いつもお世話になっております

4

1 に答える 1

0

var 変数を初期化しています。つまり、初期化関数内でのみ使用できます。次のように初期化して、これらの変数をクラスレベル変数にします。

initialize:function () {
    this.a;
    this.b;
    this.c;  

}、

getA:function () {
return this.a;

}

このようにして、これらの変数はすべて、基本クラスとスーパー クラスで使用できるようになります。

于 2012-06-20T10:33:59.280 に答える