function ClassA() { //父类
this.a = 'a';
this.b = '6789';
var c = "0987654";
d = "0987654";
// this.c = new ClassC();
}
                        
                        
                        function ClassB() {        //子类
                                //this.b = 'b';
                                this.a = 'aaa';
                        }
                        
                        ClassB.prototype=new ClassA();
                        var objB1=new ClassB();
                        var objB2=new ClassB();
                        var objB3=new ClassA();
                        alert(objB2.b);
alert('ClassA.b = ' + objB3.b);
alert('ClassA.c = ' + objB3.c);
alert('ClassA.d = ' + objB3.d);
问题:为什么ClassA类中的成员,要加上this后才能被ClassB类的实例访问到???
为什么new一个实例ClassA.c和ClassA.d在实例中也访问不到???

解决方案 »

  1.   

    问题一:
    ClassB类的实例访问到和this有什么关系啊。。用this 只是指classa ....你也可以不用this啊。。
    ClassB.prototype=new ClassA();
    建议楼主去看看继承。。
    问题二:
    建议楼主看下变量的作用域更加详细的解释等楼下。。
      

  2.   

    具体的你可以去看下javascript权威指南关与原型继承的章节,那里面讲的详细在javascript无法模拟类继承面向对象语言中的  protected修饰符
    但 public  , private还是可以的你可以把  this开头的变量定义当成是public(所以在了类中可见),而 var 定义的局部变量当成private的(在子类中不可见)。但不能不加var ,不然成全局变量了(就像你的变量d,在任何地方都可见)
      

  3.   

    http://www.jb51.net/article/16235.htm###
    这上边有各种this的说法和用法,慢慢了解吧。
      

  4.   

    this指向的是调用该方法的对象。
      

  5.   

    this定义的表示实例成员,不加表示局部变量,函数名.变量名表示静态成员