当前位置:首页 > 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实现vue

js实现vue

Vue.js 简介 Vue.js 是一个渐进式 JavaScript 框架,用于构建用户界面。其核心库专注于视图层,易于与其他库或现有项目整合。 实现 Vue.js 的基本步骤 安装 Vue.j…

js 进度条的实现

js 进度条的实现

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

js实现驼峰

js实现驼峰

实现驼峰命名的几种方法 使用正则表达式和字符串替换 通过正则表达式匹配字符串中的特定模式(如下划线或短横线),并将其后的字母转换为大写,同时移除分隔符。 function toCamelCase(s…

js实现视口

js实现视口

js实现视口检测的方法 使用JavaScript检测元素是否进入视口(viewport)可以通过Intersection Observer API或手动计算元素位置实现。以下是两种常见方法: Int…

js实现上传文件

js实现上传文件

文件上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现文件上传功能。 <input type="file"…

js实现的游戏

js实现的游戏

JavaScript 游戏开发基础 JavaScript 是开发网页游戏的流行选择,因其无需插件即可在浏览器中运行。以下是一些关键技术和资源: HTML5 Canvas Canvas 提供了绘制图形…