寄生组合继承

关键:原型式继承 + 构造函数继承

Js 最佳的继承方式,只调用了一次父类构造函数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    function Father(name) {
     this.name = name
     this.say = function () {
       console.log('hello,world');
    }
  }
   Father.prototype.showName = function () {
     console.log(this.name);
  }
   function Son(name, age) {
     Father.call(this, name)
     this.age = age
  }
   Son.prototype = Object.create(Father.prototype) // Object.create方法返回一个对象,它的隐式原型指向传入的对象。
   Son.prototype.constructor = Son
   const son = new Son('刘逍', 20)
   console.log(son.prototype.name); // 原型上已经没有name属性了,所以这里会报错