美文网首页
ES6学习(8)原生继承

ES6学习(8)原生继承

作者: 哆啦C梦的百宝箱 | 来源:发表于2022-05-09 11:39 被阅读0次
    1. 在es5中要实现继承,需要两个关键步骤:
      ①去继承构造函数中的成员,
      ②去继承原型对象上的成员。
    2. 对于去继承构造函数中的成员,我们可以借助apply或call方法,唯一的区别就是参数的不同,一个是数组,一个是单个传入。
      1.父类(我们把方法定义在父类上,
    这会造成,每次new实例的时候就会创建一个run方法,
    放到原型对象上,就会去原型对象上找)
      function Animal(name, age){
         this.age = age;
         this.name = name;
         this.run = function () {
             console.log('run');
         }
      }
      2.创建一个Dog子类
      function Dog(name, age){
         Animal.call(this, name, age);
      }
    3. 缺点:每次new一个dog实例,都需要调用Animal,效率下降
    
    1. 去继承原型对象中的方法
    关键代码:Dog.prototype = Animal.prototype
    1. 通过这行代码我们可以去实现原型对象上的继承,
    但是有一个缺点,就是无法实现个性化的继承。
    也就是说如果我们往Dog.prototype上加一个成员,那么Animal的prototype上也会存在。
    
    1. 如果我们还是想实现Dog.prototype上添加而Animal上面不增加,应该如何做呢?
      需要借助一个中间夹层
    function F(){}
    F.prototype = Animal.prototype;
    Dog.prototype = new F();
    1:创建了一个新的构造函数F,让F的原型对象指向Animal的原型对象,然后让Dog的原型对象等于F的实例对象,因为F的实例对象拥有F.prototype的成员,即用于Animal.prototype的成员。
    

    https://blog.csdn.net/Bermida/article/details/116892568

    相关文章

      网友评论

          本文标题:ES6学习(8)原生继承

          本文链接:https://www.haomeiwen.com/subject/fpqhurtx.html