ES6学习(8)原生继承

2022-05-09  本文已影响0人  哆啦C梦的百宝箱
  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

上一篇下一篇

猜你喜欢

热点阅读