JavaScript 私有方法和私有属性
JavaScript 教程
收录了这篇文章

在传统的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

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

声明:本站所有文章和图片,如无特殊说明,均为原创发布。商业转载请联系作者获得授权,非商业转载请注明出处。
随机推荐
WordPress 密码生成和密码验证
Nginx 使用 Njs 授权访问文件
JavaScript 数据类型和变量
Debian11 安装笔记3:安装 MySQL 5.7
如何使主题支持 Woocommerce
WordPress 主题激活和取消激活钩子
Node.js readline 模块
JavaScript 焦点管理