js 继承

2023-04-05  本文已影响0人  zhao_madman

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. 寄生组合式继承:在组合继承的基础上,使用寄生式继承来优化继承过程,避免重复调用父类构造函数。

上一篇下一篇

猜你喜欢

热点阅读