非常简单地说,我有很多共享变量并拥有自己变量的类。所以我创建了一个名为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);
}
当然,子类会覆盖超类初始化,因此无法访问这些值。如何初始化子类变量和超类变量,以便可以从测试函数中访问它们?
一如既往,感谢您的帮助
答案 0 :(得分:0)
您正在初始化var变量,这意味着它只能在initialize函数中使用。通过像下面的
一样初始化,将这些变量作为类级变量initialize:function () {
this.a;
this.b;
this.c;
},
getA:function () {
return this.a;
}
这样所有这些变量都可以在基类和超类中使用。