当前位置:首页 > 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变量实现换肤 通过CSS变量可以轻松实现主题切换功能。CSS变量在根元素中定义,通过JavaScript动态修改这些变量值。 :root { --primary-color: #349…

js实现tab选项卡切换

js实现tab选项卡切换

实现Tab选项卡切换的JavaScript方法 使用纯JavaScript实现Tab切换功能,可以通过监听点击事件动态切换内容显示状态。以下是两种常见实现方式: 基础DOM操作实现 /…

js实现代码雨

js实现代码雨

实现代码雨效果 使用HTML5 Canvas和JavaScript可以轻松实现经典的代码雨效果。以下是完整的实现代码和说明: HTML结构 <!DOCTYPE html> <htm…

js实现图片

js实现图片

图片加载与显示 在JavaScript中,可以通过Image对象动态加载图片。创建实例后设置src属性触发加载,通过onload回调处理加载完成后的操作: const img = new Ima…

实现继承js

实现继承js

实现继承的方式 在JavaScript中,实现继承可以通过多种方式完成,每种方式都有其优缺点。以下是几种常见的实现继承的方法: 原型链继承 原型链继承是最基本的继承方式,通过将子类的原型指向父类的实…

js 实现图片 放大

js 实现图片 放大

使用 CSS transform 实现图片放大 通过 CSS 的 transform: scale() 属性可以实现图片的平滑放大效果。结合 JavaScript 监听鼠标事件控制放大状态: con…