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

朝夕相处58
  • 94

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的原型")
        }
    }
    
})()
回复
阅读 2.4k
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();
    })()
宣传栏