当前位置:首页 > JavaScript

js 实现super

2026-04-07 04:28:29JavaScript

实现 super 的功能

在 JavaScript 中,super 关键字用于调用父类的构造函数或方法。可以通过以下方式实现类似 super 的功能:

调用父类的构造函数

在子类的构造函数中,使用 super() 调用父类的构造函数:

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
console.log(child.age); // 输出: 10

调用父类的方法

在子类的方法中,使用 super.methodName() 调用父类的方法:

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

使用 Reflect 实现类似功能

如果不使用 class 语法,可以通过 Reflect 和原型链模拟 super 的行为:

js 实现super

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

Parent.prototype.greet = function() {
  return 'Hello from Parent';
};

function Child(name, age) {
  Parent.call(this, name); // 类似 super(name)
  this.age = age;
}

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

Child.prototype.greet = function() {
  const parentGreet = Parent.prototype.greet.call(this); // 类似 super.greet()
  return parentGreet + ' and Hello from Child';
};

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

注意事项

  • super 必须在子类的 constructor 中调用,且必须在 this 之前调用。
  • 在方法中使用 super 时,确保方法不是箭头函数,因为箭头函数没有自己的 super 绑定。

标签: jssuper
分享给朋友:

相关文章

js实现动画

js实现动画

使用 CSS 动画与 JavaScript 控制 通过 JavaScript 动态添加或移除 CSS 类来触发动画。CSS 定义关键帧(@keyframes),JavaScript 通过 classL…

js实现验证码

js实现验证码

使用Canvas生成图形验证码 在HTML中创建一个Canvas元素用于绘制验证码。通过JavaScript随机生成数字或字母组合,并添加干扰线、噪点等干扰元素增强安全性。 <canvas i…

js实现图片轮播

js实现图片轮播

实现基础图片轮播 使用HTML、CSS和JavaScript创建一个简单的图片轮播。HTML部分定义轮播容器和图片,CSS设置样式和动画效果,JavaScript处理轮播逻辑。 <div cl…

js 进度条的实现

js 进度条的实现

使用 HTML 和 CSS 创建基础进度条 HTML 结构可以简单使用一个 div 元素作为容器,内部嵌套另一个 div 表示进度: <div class="progress-containe…

js实现图片预览

js实现图片预览

使用FileReader API实现图片预览 通过FileReader对象读取用户选择的图片文件并显示预览: const input = document.getElementById('image…

js实现列表

js实现列表

使用 JavaScript 实现列表 JavaScript 提供了多种方式来实现列表功能,包括数组操作、DOM 元素动态生成等。以下是几种常见的实现方法: 使用数组存储列表数据 数组是 JavaSc…