在项目开发过程中传统定义私有变量的方式,我们一般都是通过_方法去统一默认这个变量为私有变量,如下面一段代码:
class A {
constructor(){
this._name = 1;
}
}
let a = new A();
cosnole.log(a)
上述代码输出后会看到控制台中A对象里有一个_name的属性。从规范上来讲这就是私有的,但是所谓的私有属性,即仅允许内部成员调用,外部成员不允许调用。但显然通过这种写法定义属性私有,还是达不到预期效果。还是可以通过外部进行变量调用。
但经过时间的推移,JS已经支持子在类里面创建私有字段和私有方法,话不多说下面代码即如何实现私有字段定义:
class A{
#name; //定义一个私有字段
constructor(){
this.#name = 'kenny';
}
#method() {
console.log(this.#name)
}
}
let a = new A();
console.log(a)
通过#可以在类中定义私有字段,以及私有方法,仅允许类内部成员进行调用。