关于Javascript中的继承问题,一个实例对象如何继承另一个构造函数的原型

1.如何让p1使用person2原型中的方法,p1同时可以使用person1原型方法。

(function(){
    function person1(){
        
    }
    function person2(){
        
    }
    person1.prototype={
        say:function(){
            console.log("我是person1的原型");
        }
    }
    var p1=new person1();
    
    person2.prototype={
        talk:function(){
            console.log("我是person2的原型")
        }
    }
    
})()
阅读 3.2k
2 个回答

不清楚你这么做的意义是什么?

如果仅仅是调用一两次可以使用call或者apply借用。

如果随时可以互相调用,那么两个构造函数作用就相同了,没什么意义!

如果是有一个构造函数,但是想增强这一个构造函数,又不想破坏原来的构造函数,可以使用继承。

p1使用person2的方法,p1同时可以使用person1方法。

所以楼主的意思是 person2是父类 person1是子类??

  (function(){
        // 先定义父类
        function person2(){}
        person2.prototype={
            talk:function(){
                console.log("我是person2的原型")
            }
        }
        
        // 定义子类
        function person1(){}
        person1.prototype = new person2();
        person1.prototype.say = function(){
            console.log("我是person1的原型");
        }
        
        // 这样
        
        var p2 = new person2();
        p2.talk();
        
        var p1 = new person1();
        p1.talk();
        p1.say();
    })()
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题