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 variables ,这意味着它仅在初始化函数中可用。通过如下初始化使这些变量成为类级别变量

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

},

getA:function () {
return this.a;

}

这样,所有这些变量都将在基类和超类中可用。

于 2012-06-20T10:33:59.280 回答