在 JavaScript 的新版本中,ES7 中,它引入了一个新的特性 private fields 确保了数据和信息的安全性和私密性。在这篇文章中,我们将深入探讨该特性,它的工作原理和如何正确使用 private fields。
Private Fields 是什么?
首先,让我们定义一下什么是 Private Fields。在 JavaScript 中,对象属性是公共的,这意味着可以随时访问和更改对象的属性。但是,在某些情况下,我们希望属性不会公开或被更改。这时,Private Fields 可以派上用场。
Private Fields 可以被描述为一个对象的属性,它只能在对象内部被访问和修改。任何尝试从外部访问或修改这些私有字段的试图都将返回一个错误。
如何使用 Private Fields
通过使用 # 作为前缀来定义一个私有字段,如下所示:
-- -------------------- ---- ------- ----- --- - ------ - -- -- ------- ----- ------------ - ----------- -- --- ---------------- ----- -- --- -------------- ------- - ------- - ----------- -- --- ---------------- ----- -- --- -------------- ------- - -
在上述示例中,我们定义了一个名为 Car 的类,它有一个私有字段 #speed,它只能在对象内部访问和修改。
注意,在私有字段名称之前必须加上 # 前缀。这是告诉 JavaScript 引擎这个字段是私有的。
当我们试图从对象外部访问该字段时,它将返回 undefined:
const car = new Car(); console.log(car.#speed); // Uncaught SyntaxError: Private field '#speed' must be declared in an enclosing class
当我们试图在对象外部修改该字段时,它将返回一个错误:
car.#speed = 50; // Uncaught TypeError: #speed is not writable
Private Methods
除了可以为对象定义私有字段之外,我们还可以定义私有方法,这些方法只能在对象内部调用。
要定义一个私有方法,只需在方法名称前面加上 # 更改其名称。
-- -------------------- ---- ------- ----- --- - ------ - -- -- ------- ----- ------------ - ---------------------- ---------------- ----- -- --- -------------- ------- - ------- - ---------------------- ---------------- ----- -- --- -------------- ------- - ---------------- - ----------- -- --- - ---------------- - ----------- -- --- - -
在上述示例中,我们定义了两个私有方法 #increaseSpeed 和 #decreaseSpeed。这些方法只能在对象内部调用,无法在对象外部访问或调用。
总结
Private Fields 是一种新的特性,它可以确保对象的数据和信息的私密性和安全性。在这篇文章中,我们学习了如何定义私有字段和私有方法,并了解了如何在对象内部访问和修改这些私有字段和方法。这个特性为 JavaScript 中的面向对象编程带来了更高的安全性和可维护性。
现在,你可以在你的项目中使用 Private Fields 来保护你的数据和信息了。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/651beb5f95b1f8cacd384a37