JavaScript 私有方法和私有属性

本文被收录到:

JavaScript 教程

JavaScript 是互联网上最流行的编程语言。使用 JavaScript 可以开发网站、APP、小程序、游戏和服务器端。写这个教程是为了提高自己的 JavaScript 编程水平,而最好的学习方法就是“费曼学习法”,以教代学,以输出倒逼输入。最近日渐成熟的 AI 工具,刚好成为我写这个教程锦上添花。

目录

在传统的JavaScript中,没有原生支持私有方法和私有属性的概念,但开发者通常遵循一些约定和模式来模拟私有性。随着ECMAScript的发展,特别是ES2022引入了类的私有字段,现在有了官方的标准方法来定义私有成员。

传统方法(模拟私有性)

  1. 下划线前缀或下划线后缀:这是一种约定,用 _ 前缀或后缀来标记一个属性或方法为“私有的”,但实际上它仍然是公有的。

    function MyClass() {
      var _privateVar = 'private';
      
      this.getPrivateVar = function() {
        return _privateVar;
      };
    }
  2. 闭包:利用函数作用域来隐藏变量,达到模拟私有成员的目的。

    function MyClass() {
      var privateVar = 'private';
      
      this.getPrivateVar = function() {
        return privateVar;
      };
    }

 

ES2022 私有字段(#)

从 ECMAScript 2022 开始,可以在类中使用 # 符号来声明私有字段。这提供了真正的私有性,这些字段只能在类的内部访问。

class MyClass {
  #privateField = 'private';

  getPrivateField() {
    return this.#privateField;
  }

  setPrivateField(value) {
    this.#privateField = value;
  }
}

const instance = new MyClass();
console.log(instance.#privateField); // 报错,外部不能直接访问
console.log(instance.getPrivateField()); // 正确访问私有字段
instance.setPrivateField('new value');
console.log(instance.getPrivateField()); // 输出: new value

请注意,私有方法和私有字段以 # 开头,它们不能在类的外部直接访问,甚至子类也不能访问父类的私有成员,这增强了封装性,有助于避免意外修改和提高代码的可维护性。

声明:本站所有文章和图片,如无特殊说明,均为原创发布。商业转载请联系作者获得授权,非商业转载请注明出处。
真诚赞赏,手留余香
赞赏
搜神记
766 文章
4 教程
8 项目
随机推荐
WordPress 发送邮件
MySQL 表名预处理
macOS 使用 crontab 定时任务
JavaScript 的历史
Node.js stream 流
支持 Selector API 的 HTML 解析器 node-html-parser
JavaScript screen对象
Land APP 小程序