var AAA = function(str) {
            this.strName = str;
            this.show = function() {
            alert(str);
                }
            }
            var BBB = function(str2) {
            this.str2 = str2;
            this.show2 = function() {
                alert(str2);
                }
            }
            BBB.prototype = new AAA("AAA");            var a = new BBB("abc");
            a.show();BBB.prototype = new AAA("AAA");
这样写出来的BBB,都是str="AAA"的了,怎么写能像C++那样BBB可以在生成对象的时候给AAA的str赋值

解决方案 »

  1.   

    YUI的继承体系:<script type="text/javascript">
    // subClass子类,superClass父类
    function extend(subClass,superClass){
        // 新建一个空的类
        var F = function(){};
        // 父类的prototype赋给空类
        F.prototype = superClass.prototype;
        // 空类实例赋给子类的prototype    
        subClass.prototype = new F();
        // 这句很重要,子类的constructor指向子类本身,
        // 之前是指向F类的
        subClass.prototype.constructor = subClass;
        // 申明一个superclass变量用来访问父类
        subClass.superclass = superClass.prototype;
        // 如果父类的prototype指向了Object的prototype,
        // 那么父类的构造函数就指向它自己
        // alert(superClass.prototype.constructor == Object.prototype.constructor)
        if(superClass.prototype.constructor == Object.prototype.constructor) {
            superClass.prototype.constructor = superClass;
        }
    }
    var AAA = function(str) {
    this.strName = str;
    this.show = function() {
    alert(str);
    }
    }var BBB = function(str2) {
    // 调用父类的构造方法
    BBB.superclass.constructor.call(this,str2);
    this.str2 = str2;
    this.show2 = function() {
    alert(str2);
    }
    }// BBB继承AAA
    extend(BBB,AAA);var b = new BBB('ccc');
    // 调用AAA的方法
    b.show();
    </script>
      

  2.   


    var AAA = function(str) {
                this.strName = str;
                this.show = function() {
    alert(str);
                    }
               }
    var BBB = function(str2) {
    this.str2 = str2;
    this.show2 = function() {
    alert(str2);
    }
    AAA.call(this,str2);
    }
    //BBB.prototype = new AAA("AAA");
    var a = new BBB("abc");
    a.show();
      

  3.   


    var AAA = function(str) {
                this.strName = str;
                this.show = function() {
    alert(str);
                    }
               }
    var BBB = function(str2) {
    this.str2 = str2;
    this.show2 = function() {
    alert(str2);
    }
    //下面两种方法都可以
    //用call方法
    AAA.call(this,str2);
    //也可以用apply
    //AAA.apply(this,[str2]);
    }
    //BBB.prototype = new AAA("AAA");
    var a = new BBB("abc");
    a.show();忘了加些注释