在 ES11 中,我们可以使用 class 的私有字段来创建只能在类内部访问的属性。这一特性可以使得我们更加轻松地控制类的内部状态,同时也能够避免潜在的命名冲突。
定义私有字段
在 ES11 中,我们可以使用 #
符号来定义私有字段。例如:
-- -------------------- ---- ------- ----- ------ - ------ ----------------- - ---------- - ----- - --------- - ------ ----------- - -
上面的代码中,#name
就是一个私有字段。它只能在类内部访问,外部无法访问。
访问私有字段
在类内部,我们可以直接访问私有字段。例如:
-- -------------------- ---- ------- ----- ------ - ------ ----------------- - ---------- - ----- - --------- - ------ ----------- - ------------- - ---------- - ----- - -
上面的代码中,getName
和 setName
方法都可以访问私有字段 #name
。
在类外部,我们无法直接访问私有字段。例如:
const person = new Person('Alice'); console.log(person.#name); // SyntaxError: Private field '#name' must be declared in an enclosing class
上面的代码中,我们试图在类外部访问私有字段 #name
,结果会抛出一个语法错误。
私有字段的作用
私有字段的作用之一是避免命名冲突。例如:
-- -------------------- ---- ------- ----- ------ - ------ ----------------- - ---------- - ----- - --------- - ------ ----------- - - ----- ------- ------- ------ - ------ ----------------- ------ - ------------ ---------- - -------- ------------ - --------- - ------ ----------- - -
上面的代码中,Person
类和 Student
类都有一个 #name
私有字段。由于它们是私有的,因此它们之间不会发生命名冲突。
另一个作用是控制类的内部状态。例如:
-- -------------------- ---- ------- ----- ------- - ------ - -- ----------- - -------------- - ----------- - -------------- - ---------- - ------ ------------ - - ----- ------- - --- ---------- -------------------- -------------------- -------------------- -------------------------------- -- -
上面的代码中,#count
是一个私有字段,它只能在类内部访问。由于外部无法访问它,因此我们可以更加轻松地控制计数器的内部状态。
总结
ES11 中的 class 的私有字段是一个非常有用的特性。它可以使得我们更加轻松地控制类的内部状态,同时也能够避免潜在的命名冲突。在实际开发中,我们可以根据需要使用私有字段来设计更加健壮的类。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6552d0bfd2f5e1655dc81552