js 继承

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的继承有6种方式,大致总结一下它们各自的优缺点,以及它们之间的关系。 1.原型链 js的继承机制不同...
    空_城__阅读 4,123评论 0 11
  • 引言 JS系列暂定 27 篇,从基础,到原型,到异步,到设计模式,到架构模式等, 本篇是 JS系列中第 3 篇,文...
    helloworld1024z阅读 891评论 0 0
  • 继承的概念:子类可以使用父类共享的属性和方法,避免重复代码提高代码复用性。 原型链:子类可以共享父类的实例对象和实...
    浅秋_6672阅读 3,030评论 0 0
  • 一、原型链 学过java的同学应该都知道,继承是java的重要特点之一,许多面向对象的语言都支持两种继承方式:接口...
    grain先森阅读 5,228评论 0 39
  • 我们先创建一个父类 复制代码 // 父类 function Animal(name, color){ t...
    联旺阅读 2,571评论 0 0