当前位置:首页 > JavaScript

js实现class

2026-03-14 03:09:22JavaScript

实现类的基本语法

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

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

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

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

继承与扩展

通过extends关键字实现继承,子类可以覆盖或扩展父类的方法。

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

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

const student = new Student('Bob', 18, 12);
console.log(student.study()); // 输出: Bob is studying in grade 12

静态方法与属性

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

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

  static PI = 3.14159;
}

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

Getter 与 Setter

通过getset定义属性的访问器,用于封装逻辑。

class Circle {
  constructor(radius) {
    this._radius = radius;
  }

  get radius() {
    return this._radius;
  }

  set radius(value) {
    if (value <= 0) throw new Error('Radius must be positive');
    this._radius = value;
  }

  get area() {
    return Math.PI * this._radius  2;
  }
}

const circle = new Circle(5);
console.log(circle.area); // 输出: 78.53981633974483
circle.radius = 10;
console.log(circle.area); // 输出: 314.1592653589793

私有字段

使用#前缀定义私有字段,仅在类内部可访问。

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 must be declared in class

类表达式

类可以通过表达式形式定义,适合动态生成类。

js实现class

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

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

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

注意事项

  • 类声明不会提升,必须先定义后使用。
  • 类的方法默认不可枚举。
  • 类中的this指向实例,箭头函数可绑定上下文。

标签: jsclass
分享给朋友:

相关文章

js实现拖拽

js实现拖拽

实现拖拽的基本步骤 通过监听鼠标事件(mousedown、mousemove、mouseup)实现拖拽功能。以下是核心代码逻辑: const draggableElement = document.…

js实现类

js实现类

JavaScript 实现类的几种方式 JavaScript 是一种基于原型的语言,但在 ES6 之后引入了 class 语法糖,使得实现类更加直观。以下是几种常见的实现方式: 使用构造函数 传统的…

js实现vr

js实现vr

使用WebXR API实现VR体验 WebXR是浏览器中实现VR和AR体验的标准API,它取代了早期的WebVR。现代浏览器如Chrome、Edge和Firefox已支持WebXR。 // 初始化W…

js实现预览

js实现预览

文件上传预览实现 使用JavaScript实现文件上传预览功能,可以通过FileReader对象读取文件内容并显示预览。以下代码支持图片、文本和PDF文件的预览: // HTML部分需要包含inpu…

js实现选题

js实现选题

实现选题功能的JavaScript方法 基础实现方案 使用数组存储选项,通过随机索引选取: const options = ['选项A', '选项B', '选项C', '选项D']; const r…

js实现游标

js实现游标

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