javascript深入理解系列(四)——构造函数的继承(使用原型继承)

javascript深入理解系列文章网址
https://www.jianshu.com/p/451eed9094f5

继承是面试中经常会被问到的问题,所以小伙伴们一定要注意了,此篇文章一定要结合我的前几篇文章一起看,才会深入理解

一般来说构造函数的继承可以分为两步来实现,下面我们直接用实例来讲解

//父类动物
        function Animal(){
            //大部分动物有4条腿
            this.leg=4;
        }
        Animal.prototype.run=function(){
            console.log('跑');
        }
        
//子类小猫
        function Cat(name){
            //第一步,使用call改变父类中this的指向
            Animal.call(this);
            this.name=name;
        }
        //第二步
        //javascript中继承是使用原型去继承的,不像java,c++中是继承类的,所以把子类的原型指向父类的原型
        //但是又不能直接写Cat.prototype=Animal.prototype;这样写他们的地址就一样了,子类改变父类也会跟着改变
        //所以这里使用Object.create去创建
        Cat.prototype=Object.create(Animal.prototype);
                //第三步
        //记得prototype改变以后,要去重新再指定一下constructor
        Cat.prototype.constructor=Cat;
        
        var miao=new Cat("xiaomao");
        console.log(miao.leg);//4
        miao.run();//跑
        
        console.log(miao instanceof Animal);//true
        console.log(miao instanceof Cat);//true

你可能感兴趣的:(javascript深入理解系列(四)——构造函数的继承(使用原型继承))