📜  私有类成员 javascript (1)

📅  最后修改于: 2023-12-03 15:27:20.206000             🧑  作者: Mango

JavaScript私有类成员

JavaScript中的类有公有成员和私有成员。公有成员可以从外部访问和调用,而私有成员只能在类内部访问和调用。私有成员有助于隐藏数据和逻辑,并提高代码的安全性和可维护性。

声明私有类成员

在JavaScript类中,可以通过以下几种方式声明私有成员:

1. 使用命名约定

在命名私有成员时,可以使用命名约定来表示其私有性。通常,私有成员的名称以下划线开头,例如:

class MyClass {
  _privateMember = "私有成员";

  // 公有方法可以访问私有成员
  publicMethod() {
    console.log(this._privateMember);
  }
}

在这个例子中,_privateMember被标记为私有成员,并在类的公共方法中访问。

2. 使用WeakMap

另一种声明私有成员的方式是使用WeakMapWeakMap 是创建映射的一种数据结构,它可以存储键/值对。使用WeakMap可以将私有成员存储在实例上,并保证它们不会被外部访问。

const privateMembers = new WeakMap();

class MyClass {
  constructor(privateMember) {
    privateMembers.set(this, { privateMember });
  }

  // 公有方法可以访问私有成员
  publicMethod() {
    console.log(privateMembers.get(this).privateMember);
  }
}

在这个例子中,privateMember被作为构造函数的参数传递,并使用WeakMap 存储在实例上。在公共方法中,可以使用WeakMap获取私有成员的值。

3. 使用闭包

闭包是一种函数,它可以访问其外部作用域中的变量。使用闭包可以创建私有成员,并将它们存储在类的构造函数中。

class MyClass {
  constructor(privateMember) {
    this.publicMethod = function() {
      console.log(privateMember);
    };
  }
}

在这个例子中,使用了闭包来创建publicMethod函数,该函数可以访问privateMember,并将其存储在构造函数中。

总结

JavaScript中的私有成员有助于隐藏数据和逻辑,并提高代码的安全性和可维护性。可以使用命名约定、WeakMap 和闭包来声明私有成员。选择哪种方法取决于个人偏好和项目要求。