当前位置:首页 > JavaScript

js实现extends

2026-03-14 01:56:42JavaScript

实现继承的方式

在JavaScript中,继承可以通过多种方式实现,以下是常见的几种方法:

原型链继承 通过将子类的原型指向父类的实例来实现继承。这种方法简单,但存在引用类型共享的问题。

js实现extends

function Parent() {
    this.name = 'parent';
}
Parent.prototype.sayName = function() {
    console.log(this.name);
};

function Child() {}
Child.prototype = new Parent();

const child = new Child();
child.sayName(); // 'parent'

构造函数继承 在子类构造函数中调用父类构造函数,使用callapply方法。这种方法解决了引用类型共享的问题,但无法继承父类原型上的方法。

function Parent(name) {
    this.name = name;
}
Parent.prototype.sayName = function() {
    console.log(this.name);
};

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

const child = new Child('child');
console.log(child.name); // 'child'
child.sayName(); // Error: child.sayName is not a function

组合继承 结合原型链继承和构造函数继承,既能继承父类实例属性,又能继承父类原型上的方法。但会调用两次父类构造函数。

js实现extends

function Parent(name) {
    this.name = name;
}
Parent.prototype.sayName = function() {
    console.log(this.name);
};

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

const child = new Child('child');
child.sayName(); // 'child'

寄生组合继承 通过Object.create来优化组合继承,避免重复调用父类构造函数。这是目前最理想的继承方式。

function Parent(name) {
    this.name = name;
}
Parent.prototype.sayName = function() {
    console.log(this.name);
};

function Child(name) {
    Parent.call(this, name);
}
Child.prototype = Object.create(Parent.prototype);
Child.prototype.constructor = Child;

const child = new Child('child');
child.sayName(); // 'child'

ES6类继承 使用classextends关键字实现继承,语法更简洁,底层仍然是基于原型链的继承。

class Parent {
    constructor(name) {
        this.name = name;
    }
    sayName() {
        console.log(this.name);
    }
}

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

const child = new Child('child');
child.sayName(); // 'child'

注意事项

  • 原型链继承会导致引用类型属性被所有实例共享。
  • 构造函数继承无法继承父类原型上的方法。
  • 组合继承会调用两次父类构造函数,可能影响性能。
  • 寄生组合继承是最优解,避免了组合继承的缺点。
  • ES6类继承语法更现代,推荐在新项目中使用。

标签: jsextends
分享给朋友:

相关文章

js实现轮播

js实现轮播

实现轮播图的基本思路 轮播图的核心逻辑是通过定时切换展示的图片或内容,通常结合左右滑动按钮和指示器(小圆点)增强交互性。以下是基于原生JavaScript的实现方法。 HTML结构 构建轮播图的HT…

js实现倒计时

js实现倒计时

使用 setInterval 实现倒计时 通过 setInterval 定时器每秒更新剩余时间,适用于简单倒计时场景。 function countdown(seconds, callback) {…

js实现选项卡

js实现选项卡

实现选项卡的基本思路 选项卡通常由一组标签和对应的内容面板组成。点击标签时,显示对应的内容面板,隐藏其他面板。实现这一效果需要结合HTML结构、CSS样式和JavaScript交互逻辑。 HTML结…

原生js实现轮播图

原生js实现轮播图

基本结构搭建 HTML部分需要包含轮播图容器、图片列表及导航按钮。结构示例如下: <div class="slider-container"> <div class="slid…

js实现游标

js实现游标

使用JavaScript实现游标 在JavaScript中,可以通过操作DOM元素的cursor样式属性来实现自定义游标效果。以下是几种常见的实现方法: 修改默认鼠标指针样式 通过CSS的curso…

js实现目录

js实现目录

实现目录的基本思路 在JavaScript中实现目录功能通常涉及以下几个核心步骤:解析文档中的标题元素(如h1-h6),动态生成目录结构,并添加交互逻辑(如点击跳转)。以下是具体实现方法: 解析标题…