其他分享
首页 > 其他分享> > 继承的几种方式,怎么做

继承的几种方式,怎么做

作者:互联网

盯着目标就是干!!!!!
5Cn8Nq.md.jpg
经典、原型、寄生、组合、寄生组合
经典:在子类构造函数中调用父类构造函数

//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;
      }

标签:function,name,方式,寄生,继承,几种,Person,原型,prototype
来源: https://www.cnblogs.com/taosifan/p/15379172.html