组合继承

关键:创建一个函数,将要继承的对象通过参数传递给这个函数,最终返回一个对象,它的隐式原型指向传入的对象。 (Object.create()方法的底层就是原型式继承)

缺点:只能继承父类函数原型对象上的属性和方法,无法给父类构造函数传参

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    function createObj(obj) {
     function F() { }   // 声明一个构造函数
     F.prototype = obj   //将这个构造函数的原型指向传入的对象
     F.prototype.construct = F   // construct属性指回子类构造函数
     return new F        // 返回子类构造函数的实例
  }
   function Father() {
     this.name = '刘逍'
  }
   Father.prototype.showName = function () {
     console.log(this.name);
  }
   const son = createObj(Father.prototype)
   son.showName() // undefined 继承了原型上的方法,但是没有继承构造函数里的name属性