ES10 中引入了 Private Class Fields 和 Private Methods 这两个新功能,它们可以帮助开发人员更好地封装和保护类的内部状态和行为。本文将介绍如何使用这两个功能,包括如何定义私有属性和方法、如何调用私有属性和方法,以及它们的使用场景。
定义私有属性和方法
在 ES10 中,可以使用 # 符号来定义私有属性和方法。私有属性和方法只能在类的内部访问,外部无法访问。
-- -------------------- ---- ------- ----- ------ - ------ ----- ----------------- ---- - ---------- - ----- --------- - ---- - ---------- - ------ -------------- -- ------------ ----- ------ - --------- - ----------------------------- - - ----- ------ - --- -------------- ---- ----------------- -- -- ----- -- -- ----- ----- -------------------------- -- ----------- ------------------------------- -- -----------
在上面的代码中,我们使用 # 符号定义了两个私有属性 #name 和 #age,以及一个私有方法 #getInfo。在构造函数中,我们使用 this.#name 和 this.#age 来访问私有属性。在 sayInfo 方法中,我们调用了私有方法 #getInfo。
调用私有属性和方法
在类的内部,可以直接访问私有属性和方法。在类的外部,无法直接访问私有属性和方法,但可以通过公有方法来访问私有属性和方法。
-- -------------------- ---- ------- ----- ------ - ------ ----- ----------------- ---- - ---------- - ----- --------- - ---- - ---------- - ------ -------------- -- ------------ ----- ------ - --------- - ----------------------------- - --------- - ------ ----------- - -------- - ------ ---------- - - ----- ------ - --- -------------- ---- ----------------- -- -- ----- -- -- ----- ----- ------------------------------ -- -- ------ ----------------------------- -- -- --
在上面的代码中,我们定义了两个公有方法 getName 和 getAge,它们分别返回私有属性 #name 和 #age 的值。在类的外部,我们可以通过这两个公有方法来访问私有属性 #name 和 #age。
使用场景
Private Class Fields 和 Private Methods 可以帮助开发人员更好地封装和保护类的内部状态和行为,从而提高代码的安全性和可维护性。以下是一些使用场景:
- 封装类的内部状态和行为,避免外部直接访问和修改类的属性和方法,从而提高代码的安全性和可维护性。
- 在继承中,私有属性和方法只能在父类中访问,子类无法继承或重写私有属性和方法,从而避免子类破坏父类的封装性。
- 在模块化开发中,私有属性和方法只能在当前模块中访问,避免外部模块直接访问和修改当前模块的属性和方法,从而提高代码的安全性和可维护性。
总结
Private Class Fields 和 Private Methods 是 ES10 中新增的两个功能,它们可以帮助开发人员更好地封装和保护类的内部状态和行为。在定义私有属性和方法时,需要使用 # 符号来标识。在调用私有属性和方法时,可以通过公有方法来访问私有属性和方法。私有属性和方法的使用场景包括封装类的内部状态和行为、继承中的保护和模块化开发中的封装。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/65bbaeb9add4f0e0ff4848c5