簡単に言えば、変数を共有し、独自の変数を持つクラスがたくさんあります。そこで、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);
}
もちろん、サブクラスはスーパークラスの初期化をオーバーライドしているため、値にアクセスできません。テスト関数から両方にアクセスできるように、サブクラス変数とスーパークラス変数を初期化するにはどうすればよいですか?
いつもお世話になっております