【发布时间】:2012-06-19 17:17:13
【问题描述】:
简单地说,我有很多类共享变量并拥有自己的变量。所以我创建了一个名为 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);
}
当然,子类会覆盖超类的初始化,因此无法访问这些值。如何初始化子类变量和超类变量,以便它们都可以从测试函数中访问?
一如既往,感谢您的帮助
【问题讨论】:
-
我发现这个古老的讨论与原型类中的私有变量有关。没有多大帮助,它只是说明这不是一件容易的事,而且要完成它原型是一件丑陋的事情。 Implement private variables for classes。有什么想法吗?
标签: javascript prototypejs prototype-programming