📜  javascript 继承 - Javascript (1)

📅  最后修改于: 2023-12-03 14:42:37.428000             🧑  作者: Mango

JavaScript继承

在JavaScript中,继承是一种重要且常用的概念。通过继承,一个对象可以引用另一个对象的属性和方法,使代码更加可复用和可维护。本文将详细介绍JavaScript中的继承。

原型继承

在JavaScript中,对象可以通过原型链接来继承属性。用Object.create()方法可以基于当前对象创建一个新的对象,并将新对象的原型设置为当前对象的原型。这样,新对象就能够继承当前对象的属性。

let parent = {
  name: 'parent',
  sayHi: function() {
    console.log('Hi, I am ' + this.name);
  }
};

let child = Object.create(parent);
child.name = 'child';

child.sayHi(); // 输出: Hi, I am child
构造函数继承

构造函数继承通过将子类构造函数的原型链指向父类构造函数的实例来实现继承。这种方法和原型继承一样,能够继承父类的属性和方法。

function Parent(name) {
  this.name = name;
}

Parent.prototype.sayHi = function() {
  console.log('Hi, I am ' + this.name);
};

function Child(name) {
  Parent.call(this, name);
}

Child.prototype = new Parent();
Child.prototype.constructor = Child;

let child = new Child('child');
child.sayHi(); // 输出: Hi, I am child
组合继承

组合继承是将原型继承和构造函数继承结合起来的一种方法。通过使用构造函数继承的方式继承父类属性,使用原型继承继承父类的方法。

function Parent(name) {
  this.name = name;
}

Parent.prototype.sayHi = function() {
  console.log('Hi, I am ' + this.name);
};

function Child(name) {
  Parent.call(this, name);
}

Child.prototype = Object.create(Parent.prototype);
Child.prototype.constructor = Child;

let child = new Child('child');
child.sayHi(); // 输出: Hi, I am child
ES6中的继承

在ES6中,引入了类(class)作为一种语言特性。类是一种构造函数的语法糖,通过extends关键字可以实现继承。

class Parent {
  constructor(name) {
    this.name = name;
  }
  
  sayHi() {
    console.log('Hi, I am ' + this.name);
  }
}

class Child extends Parent {
  constructor(name) {
    super(name);
  }
}

let child = new Child('child');
child.sayHi(); // 输出: Hi, I am child
结语

JavaScript中的继承是一种非常重要的概念。我们可以通过原型链、构造函数和类等方式实现继承。对于程序员来说,了解和灵活运用继承是非常有必要的。