js 继承

作者: zhao_madman | 来源:发表于2023-04-05 21:49 被阅读0次

    JavaScript中的继承可以通过以下几种方式实现

    1. 原型链继承:通过将子类的原型对象指向父类的实例来实现继承。
    function Parent() {
      this.name = 'parent';
    }
    
    Parent.prototype.sayName = function() {
      console.log(this.name);
    }
    
    function Child() {}
    
    Child.prototype = new Parent();
    
    var child = new Child();
    child.sayName(); // 'parent'
    
    1. 构造函数继承:通过在子类构造函数中调用父类构造函数来实现继承。
    function Parent(name) {
      this.name = name;
    }
    
    Parent.prototype.sayName = function() {
      console.log(this.name);
    }
    
    function Child(name) {
      Parent.call(this, name);
    }
    
    var child = new Child('child');
    child.sayName(); // 'child'
    
    1. 组合继承:将原型链继承和构造函数继承结合起来,既能继承父类的属性和方法,又能保留子类自己的属性和方法。
    function Parent(name) {
      this.name = name;
    }
    
    Parent.prototype.sayName = function() {
      console.log(this.name);
    }
    
    function Child(name, age) {
      Parent.call(this, name);
      this.age = age;
    }
    
    Child.prototype = new Parent();
    Child.prototype.constructor = Child;
    
    Child.prototype.sayAge = function() {
      console.log(this.age);
    }
    
    var child = new Child('child', 10);
    child.sayName(); // 'child'
    child.sayAge(); // 10
    
    1. 原型式继承:通过创建一个临时的构造函数来实现继承。
    function createObj(o) {
      function F() {}
      F.prototype = o;
      return new F();
    }
    
    var parent = {
      name: 'parent',
      sayName: function() {
        console.log(this.name);
      }
    };
    
    var child = createObj(parent);
    child.sayName(); // 'parent'
    
    1. 寄生式继承:在原型式继承的基础上,增强对象,返回一个新的对象。

    2. 寄生组合式继承:在组合继承的基础上,使用寄生式继承来优化继承过程,避免重复调用父类构造函数。

    相关文章

      网友评论

          本文标题:js 继承

          本文链接:https://www.haomeiwen.com/subject/hzkyddtx.html