当前位置:首页 > JavaScript

js super 实现

2026-04-05 14:05:23JavaScript

super 在 JavaScript 中的实现

在 JavaScript 中,super 关键字用于调用父类的构造函数或方法。它在类继承中扮演重要角色,确保子类可以访问父类的属性和方法。

调用父类构造函数

在子类的构造函数中,super() 必须在 this 之前调用,否则会抛出错误。这是因为 super() 负责初始化父类的 this 绑定。

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

class Child extends Parent {
  constructor(name, age) {
    super(name); // 调用父类构造函数
    this.age = age;
  }
}

const child = new Child('Alice', 10);
console.log(child.name); // 输出: Alice

调用父类方法

super 也可以用于调用父类的方法,通常用于方法重写(override)时保留父类的逻辑。

class Parent {
  greet() {
    return 'Hello from Parent';
  }
}

class Child extends Parent {
  greet() {
    return super.greet() + ' and Hello from Child';
  }
}

const child = new Child();
console.log(child.greet()); // 输出: Hello from Parent and Hello from Child

super 在静态方法中的使用

super 也可以在静态方法中调用父类的静态方法。

class Parent {
  static staticMethod() {
    return 'Static method in Parent';
  }
}

class Child extends Parent {
  static staticMethod() {
    return super.staticMethod() + ' extended in Child';
  }
}

console.log(Child.staticMethod()); // 输出: Static method in Parent extended in Child

super 的限制

  • super 只能在派生类(子类)中使用,普通函数或非继承类中使用会报错。
  • 在构造函数中,super() 必须在访问 this 之前调用。
  • 如果子类没有定义构造函数,会默认调用 super() 并传递所有参数。

super 的实现原理

super 的行为基于 JavaScript 的原型链机制。当调用 super.method() 时,引擎会从当前类的 [[HomeObject]] 属性指向的原型对象上查找方法。[[HomeObject]] 是函数在定义时确定的,指向方法所属的对象。

js super 实现

// 近似实现逻辑(非实际代码)
function getSuperMethod(currentClass, methodName) {
  const parentProto = Object.getPrototypeOf(currentClass.prototype);
  return parentProto[methodName];
}

标签: jssuper
分享给朋友:

相关文章

js实现乘

js实现乘

JavaScript 实现乘法运算 在 JavaScript 中实现乘法运算可以通过多种方式完成,包括基本运算符、函数封装以及高级算法(如大数乘法)。以下是几种常见方法: 使用基本乘法运算符 Jav…

js实现延迟

js实现延迟

实现延迟的方法 在JavaScript中,实现延迟操作有多种方式,以下是几种常见的方法: 使用setTimeout函数 setTimeout是JavaScript中最常用的延迟执行方法。它接受一个回…

js实现文字滚动

js实现文字滚动

实现文字滚动的几种方法 使用CSS动画实现滚动 通过CSS的@keyframes和transform属性可以实现平滑的文字滚动效果。 <style> .scroll-text { w…

js实现定位

js实现定位

使用Geolocation API获取当前位置 在JavaScript中,可以通过浏览器内置的Geolocation API获取用户的地理位置信息。该API需要用户授权才能访问位置数据。 if (n…

js实现复选框

js实现复选框

实现复选框的基本方法 使用HTML的<input type="checkbox">元素创建复选框,并通过JavaScript监听其状态变化。 <input type="checkb…

js 实现mvc

js 实现mvc

MVC 模式简介 MVC(Model-View-Controller)是一种软件设计模式,将应用程序分为三个核心组件:模型(Model)处理数据和业务逻辑,视图(View)负责展示数据,控制器(Con…