当前位置:首页 > JavaScript

js实现class

2026-04-05 21:15:32JavaScript

实现类的基本语法

JavaScript 中使用 class 关键字定义类,通过 constructor 方法初始化实例属性。

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 实现继承,子类可通过 super 调用父类构造函数或方法。

js实现class

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 PI = 3.14159;

  static square(x) {
    return x * x;
  }
}

console.log(MathUtils.square(4)); // 输出: 16
console.log(MathUtils.PI);        // 输出: 3.14159

Getter 与 Setter

使用 getset 定义属性的访问器,控制属性的读写逻辑。

js实现class

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

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

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

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

私有字段

ES2022 引入私有字段语法,通过 # 前缀定义仅类内部可访问的属性或方法。

class Counter {
  #count = 0; // 私有字段

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

  get value() {
    return this.#count;
  }
}

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

类表达式

类可以通过表达式形式定义,适合动态生成类或匿名类场景。

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

const dog = new Animal('Dog');
console.log(dog.name); // 输出: Dog

标签: jsclass
分享给朋友:

相关文章

js实现继承

js实现继承

原型链继承 通过将子类的原型指向父类的实例实现继承。子类实例可以访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Parent…

js实现乘

js实现乘

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

js实现瀑布流

js实现瀑布流

实现瀑布流布局 瀑布流布局是一种常见的网页布局方式,常用于图片展示、商品列表等场景。以下是使用 JavaScript 实现瀑布流布局的几种方法。 纯 JavaScript 实现 通过计算元素的位置和…

js画图实现

js画图实现

使用Canvas API绘制图形 Canvas是HTML5提供的绘图API,通过JavaScript操作Canvas元素可以绘制各种图形。以下是一个简单的示例: <canvas id="myC…

链表实现js

链表实现js

链表的基本概念 链表是一种线性数据结构,由一系列节点组成,每个节点包含数据和一个指向下一个节点的指针(单向链表)或两个指针(双向链表)。与数组不同,链表在内存中非连续存储,插入和删除操作更高效,但随机…

js实现正交

js实现正交

正交的概念 正交在数学和计算机科学中通常指两个向量垂直或线性无关。在编程中,正交性常被用于设计模块化、低耦合的系统。 向量正交判断 判断两个向量是否正交可以通过点积是否为0来实现: fun…