本帖最后由 h123hu 于 2012-04-03 17:11:36 编辑

解决方案 »

  1.   

    function oDemo(name)
    {
        eventManage.call(this);
        this.name=name;    return eventManage;试试
    }
      

  2.   

    oDemo 的 addEvent 方法在哪里定义的?
      

  3.   

    function Prototype(obj)
    {
        function F(){}    //创建一个临时原型
        F.prototype=obj;    //继承传入对象的属性和方法
        return new F;    //返回一个构造函数
    }//创建超类型副本
    function inPrototype(obj1,obj2)
    {
        var pro=Prototype(obj1.prototype);    //创建超类型的副本对象
        pro.cunstructor=obj2;    //给副本对象增加一个constructor属性
        obj2.prototype=pro;    //把对象副本赋值给子类型
    }inPrototype(oDemo,eventManage);    obj2.prototype=pro;    //把对象副本赋值给子类型
    这里吧 eventManage.prototype变成了 oDemo的?
      

  4.   


    想让oDemo继承eventManage的原型的addEvent方法,
    但是,继承不到,不知道哪里出了问题
      

  5.   

    inPrototype(oDemo,eventManage); 
    参数传反了吧!!!
      

  6.   

    典型的寄生组合试继承。
    function inPrototype(obj1,obj2)
    {
        var pro=Prototype(obj1.prototype);    //创建超类型的副本对象
        pro.cunstructor=obj2;    //给副本对象增加一个constructor属性
        obj2.prototype=pro;    //把对象副本赋值给子类型
    }这句你调用方式是:inPrototype(oDemo,eventManage);  
    那么obj2.prototype =pro 就是eventManage.prototype =pro; 看出问题了吧? obj1.prototype是oDemo的原型对象,你用eventManage的原型来等于oDemo的原型 这不成了父类继续子类?修改:function inPrototype(obj1,obj2)
    {
        var pro=Prototype(obj2.prototype);    //创建超类型的副本对象
        pro.cunstructor=obj1;    //给副本对象增加一个constructor属性
        obj1.prototype=pro;    //把对象副本赋值给子类型
    }