📅  最后修改于: 2023-12-03 15:27:20.206000             🧑  作者: Mango
JavaScript中的类有公有成员和私有成员。公有成员可以从外部访问和调用,而私有成员只能在类内部访问和调用。私有成员有助于隐藏数据和逻辑,并提高代码的安全性和可维护性。
在JavaScript类中,可以通过以下几种方式声明私有成员:
在命名私有成员时,可以使用命名约定来表示其私有性。通常,私有成员的名称以下划线开头,例如:
class MyClass {
_privateMember = "私有成员";
// 公有方法可以访问私有成员
publicMethod() {
console.log(this._privateMember);
}
}
在这个例子中,_privateMember
被标记为私有成员,并在类的公共方法中访问。
另一种声明私有成员的方式是使用WeakMap
。WeakMap
是创建映射的一种数据结构,它可以存储键/值对。使用WeakMap
可以将私有成员存储在实例上,并保证它们不会被外部访问。
const privateMembers = new WeakMap();
class MyClass {
constructor(privateMember) {
privateMembers.set(this, { privateMember });
}
// 公有方法可以访问私有成员
publicMethod() {
console.log(privateMembers.get(this).privateMember);
}
}
在这个例子中,privateMember
被作为构造函数的参数传递,并使用WeakMap
存储在实例上。在公共方法中,可以使用WeakMap
获取私有成员的值。
闭包是一种函数,它可以访问其外部作用域中的变量。使用闭包可以创建私有成员,并将它们存储在类的构造函数中。
class MyClass {
constructor(privateMember) {
this.publicMethod = function() {
console.log(privateMember);
};
}
}
在这个例子中,使用了闭包来创建publicMethod
函数,该函数可以访问privateMember
,并将其存储在构造函数中。
JavaScript中的私有成员有助于隐藏数据和逻辑,并提高代码的安全性和可维护性。可以使用命名约定、WeakMap 和闭包来声明私有成员。选择哪种方法取决于个人偏好和项目要求。