当前位置: 首页 > news >正文

JavaScript 类中静态变量与私有变量的区别及用法

一、静态变量(静态属性)

定义
通过 static 关键字声明,属于类本身而非实例,通过类名直接访问。

特性

  1. 归属:绑定在类上,所有实例共享同一份数据

  2. 访问:类外部通过 ClassName.prop 访问

  3. 内存:类加载时初始化,生命周期与类相同

  4. 方法内:静态方法中的 this 指向类本身

定义方式:

class Config {static API_KEY = "x1y2z3"; // 静态属性static MAX_USERS = 100;
}

用途:全局配置、工具方法、跨实例共享常量。

示例

class Config {static API_KEY = "x1y2z3"; // 静态属性static MAX_USERS = 100;static validateKey() {// this指向Config类return this.API_KEY.length > 10; }
}console.log(Config.API_KEY); // "x1y2z3"
Config.MAX_USERS = 200; // 修改静态属性

二、私有变量(私有字段)

定义
通过 # 前缀声明,仅在类内部可访问。

特性

  1. 封装性:外部无法直接访问(user.#password 会报错)

  2. 实例级:每个实例拥有独立副本(new User("a") new User("b")#password 互不影响)

  3. 访问限制:必须通过类内部方法读写

  4. 命名规范:强制以 # 开头命名

  5. 继承限制:子类无法继承父类的私有字段

  6. 用途:敏感数据(密码、token)、内部状态管理

定义方式

class User {#password; // 私有字段声明(必须带#)constructor(pwd) {this.#password = pwd; // 内部赋值}
}

示例:

class User {#password; // 私有字段constructor(name, pwd) {this.name = name;this.#password = pwd; // 内部赋值}login(inputPwd) {return this.#password === inputPwd;}
}const user = new User("Alice", "secret");
console.log(user.password); // undefined (外部不可访问)
console.log(user.login("secret")); // true (通过方法验证)

核心对比表

特性静态变量私有变量
声明static prop = value#prop(需预先声明)
归属类本身(Config.prop实例对象(user.#prop
访问范围类内外均可访问仅类内部可访问
内存分配单份(所有实例共享)每实例独立
修改影响影响所有实例仅影响当前实例
典型用途全局配置、工具方法敏感数据、内部状态

http://www.dtcms.com/a/350886.html

相关文章:

  • eniac:世界上第一台通用电子计算机的传奇
  • 开发避坑指南(36):Java字符串Base64编码实战指南
  • 深度学习-----《PyTorch深度学习核心应用解析:从环境搭建到模型优化的完整实践指南》
  • 初步了解多线程
  • 交换机是如何同时完成帧统计与 BER/FEC 分析的
  • 【应急响应工具教程】SPECTR3:通过便携式 iSCSI 实现远程证据的只读获取与分析
  • [pilot智驾系统] 模型守护进程(modeld)
  • rbio1:以生物学世界模型为软验证器训练科学推理大语言模型
  • 面试八股文之——JAVA基础
  • 深度学习梯度下降与交叉熵损失
  • 重塑企业沟通与增长:云蝠智能大模型如何成为您的智能语音中枢
  • 大模型(一)什么是 MCP?如何使用 Charry Studio 集成 MCP?
  • SQL查询-设置局部变量(PostgreSQL、MySQL)
  • 嵌入式学习 day58 驱动字符设备驱动
  • 玳瑁的嵌入式日记D25-0825(进程)
  • Java全栈开发实战:从Spring Boot到Vue3的项目实践
  • Android Glide 缓存机制深度解析与优化:从原理到极致实践
  • 集成电路学习:什么是ONNX开放神经网络交换
  • 深度学习③【卷积神经网络(CNN)详解:从卷积核到特征提取的视觉革命(概念篇)】
  • 详解 Transformer 激活值的内存占用公式
  • SOME/IP-SD报文中 Entry Format(条目格式)-理解笔记5
  • 算法题记录01:
  • 0826xd
  • Trip Footprints 旅行App开发全流程解析
  • UALink是什么?
  • 数字化转型:概念性名词浅谈(第四十二讲)
  • 牛客周赛 Round 106(小苯的方格覆盖/小苯的数字折叠/ 小苯的波浪加密器/小苯的数字变换/小苯的洞数组构造/ 小苯的数组计数)
  • 撤回git 提交
  • 算法训练营day62 图论⑪ Floyd 算法精讲、A star算法、最短路算法总结篇
  • C# 中常见的 五大泛型约束