1.原型继承

            原型继承

                + 继承 => 涉及两个构造函数

                + 准备好的父类叫做Person

                + 准备好的子类叫做Student

                + 当完成继承以后,Student继承自Person

                + 那么s就可以使用name属性和sayHi方法

            原型继承

                == 就是通过改变原型链的方式来达到继承

                == 子类.prototype = 父类的实例

            原型继承缺点

                1 我继承下来的属性没有继承在自己身上

                    == 而是在__proto__里面

                    == 当我访问的时候就要求__proto__里面找

                2 我继承的目的是为了继承属性和方法

                    == 我自己要使用的name属性和age属性的值  

                    == 自己要用的多个参数在多个位置传递

                    == 对于代码的维护和书写阅读都不是很好

特点: 子类利用原型来将父类里面的属性和方法继承一份,给子类来进行使用

优点: 可以将父类里面的属性和方法给继承一份下来,提供给子类来进行使用

缺点: 子类没有自己的原型,用的原型父类的原型的

        // 1 准备一个父类

        function Person(name){

            this.name = name

        }

        // 原型上有一个方法

        Person.prototype.sayHi= function(){

            console.log('hi')

        }

        // 使用Person来实例化对象

        let p = new Person('jack')

        /*

            p = {

                name:'jack',

                __proto__:{

                    sayHi:function(){}

                }

            }

        */

        // console.log(p)

        // 2 准备一个子类

        function Student(age){

            this.age = age;

        }

        // 让Student完成继承

        Student.prototype = new Person('jack')

        /*

            Student.prototype = p =  {

                name:'jack',

                __proto__:{

                    sayHi:function(){}

                }

            }

        */

        // 使用Student来实例对象

        let s = new Student('18')

        /*

            s = {

                age:'18',

                __proto__:Student.prototype:{

                    name:'jack',

                    __proto__:{

                        sayHi:function(){}

                    }

                }

            }

        */

        console.log(s)

        console.log(s.name)

        s.sayHi()

        /*

            当你使用s去访问name属性的时候

            + 自己没有,去到__proto__上有

            当你使用s去访问sayHi方法的时候

            + 自己没有,去到__proto__上还没有

            + 就再去__proto__上找,就有了

        */

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值