1. 程式人生 > 其它 >繼承的幾種方式,怎麼做

繼承的幾種方式,怎麼做

[丁大爺的部落格](https://dingshiyi.top./detail/77#_102)

盯著目標就是幹!!!!!

經典、原型、寄生、組合、寄生組合
經典:在子類建構函式中呼叫父類建構函式

//es5
function A() {
  this.color = ['red']
}

function B(name) {
  A.call(this)
  this.name = name
}
//面向物件
class A {
  constructor() {
  }
}

class B extends A {
  constructor() {
    super()  
  }
}

原型:ES5通過新增Object.create()方法原型式繼承的概率規範化了,在裡面建立一個原型,然後在原型上新增屬性,最後返回一個原型的例項

    function obj(p) {
      function F() {}
      F.prototype = p
      return new F()
    }
    let p1 = obj()
//es5
let p2 = Object.create()

寄生:在裡面建立一個物件,然後在該物件上新增屬性,最後返回該物件

    function other(original) {
        const clone = Object.create(original); //原型繼承
        clone.say = function () {
          console.log("say Hi");
        };
        return clone;
      }

組合:將經典和原型鏈組合在一起

      function Person() {
        this.name = "人類";
      }
      Person.prototype.run = function () {
        console.log("人類跑步");
      };

      function Robot(name) {
        //通過經典繼承的方式繼承父類例項的屬性
        Person.call(this);
        this.name = name;
      }

      //通過原型鏈來繼承原型上的方法和屬性
      Robot.prototype = new Person();

寄生組合:

      function usefulFunction(Father, Son) {
        //這裡借用寄生式
        function F() {}
        F.prototype = Father.prototype;
        //這裡借用組合式
        const p = new F();
        p.constructor = Son;
        Son.prototype = p;
      }