史上最全面的JavaScript继承方法推荐,你了解吗?

更新于
2026-10-02 14:01:38
0阅读来源:SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计3850个文字,预计阅读时间需要16分钟。

前言:为家族分享JS中最常见且最详细的继承方式,以下将逐一面对几个维度进行展开说明。文章稍长,请耐心阅读,有任何错误理解的地方,欢迎留言指出。

生产原因:为了实现代码的复用,避免重复编写相同的功能。

代码实现:javascriptfunction 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('Tom', 12);child.sayName(); // 输出:Tomchild.sayAge(); // 输出:12

基本原理:

1.构造函数继承:通过`Parent.call(this, name)`将父类构造函数的参数传递给子类,实现属性继承。

2.原型链继承:通过`Child.prototype=new Parent()`,将父类原型赋值给子类原型,实现方法继承。

3.组合继承:结合构造函数继承和原型链继承的优点,先通过`Parent.call(this, name)`实现属性继承,再通过`Child.prototype=new Parent()`实现方法继承。

优点:

1.代码复用。

2.属性和方法可以灵活扩展。

缺点:

1.如果父类原型有引用类型属性,子类实例之间会共享这个属性,容易导致修改一个实例的属性影响到其他实例。

2.组合继承在创建子类实例时,会调用两次父类构造函数,导致性能问题。

阅读全文

本文共计3850个文字,预计阅读时间需要16分钟。

前言:为家族分享JS中最常见且最详细的继承方式,以下将逐一面对几个维度进行展开说明。文章稍长,请耐心阅读,有任何错误理解的地方,欢迎留言指出。

生产原因:为了实现代码的复用,避免重复编写相同的功能。

代码实现:javascriptfunction 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('Tom', 12);child.sayName(); // 输出:Tomchild.sayAge(); // 输出:12

基本原理:

1.构造函数继承:通过`Parent.call(this, name)`将父类构造函数的参数传递给子类,实现属性继承。

2.原型链继承:通过`Child.prototype=new Parent()`,将父类原型赋值给子类原型,实现方法继承。

3.组合继承:结合构造函数继承和原型链继承的优点,先通过`Parent.call(this, name)`实现属性继承,再通过`Child.prototype=new Parent()`实现方法继承。

优点:

1.代码复用。

2.属性和方法可以灵活扩展。

缺点:

1.如果父类原型有引用类型属性,子类实例之间会共享这个属性,容易导致修改一个实例的属性影响到其他实例。

2.组合继承在创建子类实例时,会调用两次父类构造函数,导致性能问题。

阅读全文