当前位置:首页 > JavaScript

js 实现类

2026-02-01 13:21:56JavaScript

在JavaScript中,可以通过多种方式实现类(class)的概念,以下是常见的几种方法:

构造函数模式

使用构造函数和new关键字创建对象实例。构造函数名通常首字母大写以区分普通函数。

function Person(name) {
  this.name = name;
  this.sayHello = function() {
    console.log(`Hello, ${this.name}`);
  };
}
const person = new Person('Alice');
person.sayHello(); // 输出: Hello, Alice

原型链模式

通过原型(prototype)共享方法,避免每个实例重复创建方法,节省内存。

function Person(name) {
  this.name = name;
}
Person.prototype.sayHello = function() {
  console.log(`Hello, ${this.name}`);
};
const person = new Person('Bob');
person.sayHello(); // 输出: Hello, Bob

ES6 Class语法

ES6引入的class语法糖,更接近传统面向对象语言的写法,底层仍基于原型链。

class Person {
  constructor(name) {
    this.name = name;
  }
  sayHello() {
    console.log(`Hello, ${this.name}`);
  }
}
const person = new Person('Charlie');
person.sayHello(); // 输出: Hello, Charlie

工厂函数模式

不使用new关键字,通过函数直接返回对象,适合需要灵活控制对象创建的场景。

function createPerson(name) {
  return {
    name,
    sayHello() {
      console.log(`Hello, ${this.name}`);
    }
  };
}
const person = createPerson('Dana');
person.sayHello(); // 输出: Hello, Dana

静态方法与属性

通过static关键字定义类级别的属性和方法,无需实例化即可调用。

class MathUtils {
  static PI = 3.14159;
  static square(x) {
    return x * x;
  }
}
console.log(MathUtils.square(5)); // 输出: 25

继承实现

使用extends实现类继承,子类可通过super调用父类构造函数或方法。

class Animal {
  constructor(name) {
    this.name = name;
  }
  speak() {
    console.log(`${this.name} makes a noise.`);
  }
}
class Dog extends Animal {
  speak() {
    super.speak();
    console.log(`${this.name} barks.`);
  }
}
const dog = new Dog('Rex');
dog.speak(); // 输出: Rex makes a noise. Rex barks.

私有字段

ES2022引入的私有字段(以#开头),只能在类内部访问。

js 实现类

class Counter {
  #count = 0;
  increment() {
    this.#count++;
  }
  getCount() {
    return this.#count;
  }
}
const counter = new Counter();
counter.increment();
console.log(counter.getCount()); // 输出: 1

注意事项

  • 原型链方法适用于需要方法共享的场景,减少内存占用。
  • ES6 class语法更清晰,但需注意它并非真正的类,而是语法糖。
  • 工厂函数模式适合需要封装复杂对象创建逻辑的情况。
  • 私有字段提供真正的封装性,但需注意浏览器兼容性。

标签: js
分享给朋友:

相关文章

js实现pdf在线预览

js实现pdf在线预览

使用PDF.js实现PDF在线预览 PDF.js是由Mozilla开发的一个开源JavaScript库,可以在网页中直接渲染PDF文件。以下是实现PDF在线预览的步骤: 引入PDF.js库 在HT…

js实现祖玛

js实现祖玛

实现祖玛游戏的核心思路 祖玛游戏的核心玩法是发射彩色珠子,形成三个或以上相同颜色的珠子即可消除。以下是使用JavaScript实现的基本框架。 游戏初始化 创建画布并初始化游戏状态: const…

js怎么实现异步

js怎么实现异步

异步实现方法 JavaScript中实现异步操作主要通过以下几种方式: Promise Promise是ES6引入的异步解决方案,用于处理异步操作的成功或失败状态。 const promise =…

js实现代码雨

js实现代码雨

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

js实现文字滚动

js实现文字滚动

实现文字滚动的几种方法 使用CSS动画实现滚动 通过CSS的@keyframes和transform属性可以实现平滑的文字滚动效果。 <style> .scroll-text { w…

js实现显示隐藏

js实现显示隐藏

显示隐藏的实现方法 在JavaScript中,实现元素的显示和隐藏可以通过多种方式完成。以下是几种常见的方法: 修改CSS的display属性 通过改变元素的display属性可以在none(隐藏)…