当前位置:首页 > JavaScript

js 实现类

2026-04-06 06:10:30JavaScript

实现类的基本语法

在 JavaScript 中,可以通过 class 关键字定义类。类包含构造函数、方法和属性。

class Person {
  constructor(name, age) {
    this.name = name;
    this.age = age;
  }

  greet() {
    console.log(`Hello, my name is ${this.name}`);
  }
}

const person = new Person('Alice', 25);
person.greet(); // 输出: Hello, my name is Alice

类的继承

使用 extends 关键字实现类的继承,子类可以调用父类的构造函数和方法。

js 实现类

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

  study() {
    console.log(`${this.name} is studying in grade ${this.grade}`);
  }
}

const student = new Student('Bob', 18, 12);
student.greet(); // 输出: Hello, my name is Bob
student.study(); // 输出: Bob is studying in grade 12

静态方法

静态方法属于类本身,而不是类的实例。通过 static 关键字定义。

class MathUtils {
  static add(a, b) {
    return a + b;
  }
}

console.log(MathUtils.add(2, 3)); // 输出: 5

Getter 和 Setter

通过 getset 关键字定义属性的访问器。

js 实现类

class Rectangle {
  constructor(width, height) {
    this._width = width;
    this._height = height;
  }

  get area() {
    return this._width * this._height;
  }

  set width(value) {
    if (value > 0) {
      this._width = value;
    }
  }
}

const rect = new Rectangle(10, 20);
console.log(rect.area); // 输出: 200
rect.width = 15;
console.log(rect.area); // 输出: 300

私有字段

通过 # 前缀定义私有字段,只能在类内部访问。

class Counter {
  #count = 0;

  increment() {
    this.#count++;
  }

  getCount() {
    return this.#count;
  }
}

const counter = new Counter();
counter.increment();
console.log(counter.getCount()); // 输出: 1
// console.log(counter.#count); // 报错: Private field '#count' must be declared in an enclosing class

类表达式

类可以通过表达式形式定义,类似于函数表达式。

const Animal = class {
  constructor(name) {
    this.name = name;
  }

  speak() {
    console.log(`${this.name} makes a noise`);
  }
};

const animal = new Animal('Dog');
animal.speak(); // 输出: Dog makes a noise

类的注意事项

  • 类声明不会被提升,必须在定义后使用。
  • 类的方法默认是不可枚举的。
  • 类内部默认启用严格模式。
  • 类的所有方法都定义在原型上,实例共享方法。

标签: js
分享给朋友:

相关文章

js实现二叉树

js实现二叉树

二叉树的基本概念 二叉树是一种树形数据结构,每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树的常见操作包括插入、删除、遍历等。 二叉树的节点定义 在JavaScript中,二叉树的节点可…

js实现投球

js实现投球

实现投球动画的基本思路 使用JavaScript和CSS动画结合的方式模拟投球效果。核心是通过改变元素的位置、旋转和缩放属性,配合定时器或CSS过渡实现平滑动画。 创建基础HTML结构 <…

js实现目录

js实现目录

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

js钟表实现

js钟表实现

实现JavaScript钟表的基本方法 创建一个简单的JavaScript钟表可以通过以下步骤完成,涵盖数字和模拟两种形式。 数字钟表实现 HTML结构只需一个显示时间的容器: <div i…

js实现下拉菜单

js实现下拉菜单

使用HTML和CSS创建基础结构 HTML部分需要包含一个触发下拉的按钮和隐藏的下拉菜单内容: <div class="dropdown"> <button class="dr…

js实现图片移动

js实现图片移动

使用CSS和JavaScript实现图片移动 方法一:使用CSS动画结合JavaScript控制 通过CSS定义动画关键帧,JavaScript动态添加或移除动画类。 /* CSS部分 */ .m…