本帖最后由 hckxzy 于 2011-06-23 16:48:55 编辑

解决方案 »

  1.   

    首先对LZ的这种细致的学习精神表示敬仰这个问题问的非常好 
    //子类重写父类的fun方法
    Obj2.prototype.fun = function (){Obj2.prototype.constructor.prototype.fun.call(this);} 
    既然要重写为什么还要调父类的fun呢
      

  2.   

    <script>
    function Parent(){}Parent.prototype.say = function(){
    alert("a");
    }function Child(){}Child.prototype = new Parent();Child.prototype.say = function(){
    Child.prototype.constructor.prototype.say.call(this);
    alert(1);
    }var c = new Child();c.say();</script>
      

  3.   

    关键点 在继承里面  子类必须要能访问到超类的原型
    则必定要有 类似  super的字段 不为空则表示超类剩下的就是 你构建的 对象体系的 系统方法(必要方法,比如有没有一个初始化的入口方法)
    和 超类对象的允许访问时机
      

  4.   

    <script>
    function BaseObj(v1){this.value=v1};function Obj2(v2){this.value="2222222" ,this.oth = v2};BaseObj.prototype.fun = function (){alert(this.value);}Obj2.prototype = new BaseObj();  
     
    o2 = new Obj2("22222.value");//o2.fun();Obj2.prototype.fun = function (){Obj2.prototype.constructor.prototype.fun.call(this);alert("没问题啊");}  o2.fun();
    </script>
      

  5.   

    function BaseObj(v1){
    this.value=v1
    };
    BaseObj.prototype.fun = function (){alert(this.value);}function Obj2(v2){
        this.value="2222222";
    this.oth = v2
    };Obj2.prototype = new BaseObj();;
    Obj2.prototype.super = BaseObj.prototype;
    Obj2.prototype.constructor = Obj2;
     
    Obj2.prototype.fun = function (){
    this.super.fun.call(this);    
    alert(this.oth)
    };
    o2 = new Obj2("22222.value");
    o2.fun();
      

  6.   


    大侠解释甚好,想问大侠prototype还有什方法和属性没?
      

  7.   


    想问大侠为什么此句
    Obj2.prototype.super = BaseObj.prototype;
    之后,就影响了Obj2.prototype的指向为BaseObj。
     
      

  8.   


    想问大侠为什么此句
    Obj2.prototype.super = BaseObj.prototype;
    之后,就影响了Obj2.prototype.constructor的指向为BaseObj。