在 JavaScript 中,私有成员一直是一个争议话题。许多开发人员认为 JavaScript 缺乏私有成员的支持,这使得编写模块化代码变得更加困难。 ES6 引入了类和模块,但它们并没有真正解决这个问题。ES12 加入了一些新的语法,私有成员和私有方法是其中之一。在本篇文章中,我们将深入了解 ES12 中的 private 和 private method,并看看如何在你的代码中使用它们。
什么是 private 成员?
在 JavaScript 代码中,有时我们需要将一些属性或方法隐藏起来,使它们不被其他代码访问或修改。ES12 中添加了一个新的语法,private 成员可以用来实现这个目的。
要声明私有成员,我们使用 #
符号。让我们看下面的例子:
-- -------------------- ---- ------- ----- ------- - ------------- - -------- ---------- - -------------------------------- - - ----- ------- - --- ---------- ----------------------------------- -- ------ ----- ------------------- -- -------
在这个例子中,我们声明了一个私有字段 #privateField
,它的值为 hello
。我们也定义了一个公共方法 sayHello
,它将私有字段打印到控制台。
当我们创建 Example
类的实例时,我们可以像使用公共字段和方法一样使用 #privateField
,但是仅限于内部。如果我们尝试在类外访问私有字段,我们会得到一个语法错误。
什么是 private 方法?
ES12 也引入了 private 方法的概念。这些方法不能从类外部访问,只能从类内部访问。
要定义私有方法,请使用 #
符号。这里有一个例子:
-- -------------------- ---- ------- ----- ------- - ---------------- - -------------------- ------ --------- - -------------- - ---------------------- - - ----- ------- - --- ---------- ----------------------- -- -------- ------ ------- ------------------------- -- ------ -----
在这个例子中,我们声明了一个私有方法 #privateMethod
,它将一条消息打印到控制台。我们还定义了一个公共方法 publicMethod
,它调用私有方法。
与私有字段一样,私有方法也不能从类外部访问。
为什么要使用 private 成员和方法?
为什么要使用 private 成员和方法呢?
第一,私有成员和方法使得代码更模块化。因为私有成员和方法只能在类的内部使用,所以它们不会被外部代码访问或修改,从而增加了代码的可维护性。
第二,私有成员和方法提高了代码的安全性。因为私有成员和方法不能被外部代码访问,所以它们可以在类中被更仔细地处理,避免了一些安全问题。例如,私有字段可以被声明为只读或只写,从而防止它们在类外部被修改。
如何使用 private 成员和方法?
要开始使用 private 成员和方法,请使用 #
符号定义它们。在类中使用时,它们的行为类似于公共成员和方法。
让我们来看一个更详细的例子:
-- -------------------- ---- ------- ----- ----------- - --------------- --------- -------------------------- --------------- - ------------------- - -------------- ------------- - --------------- - --------------- - ------------- -- ------- - ---------------- - -- -------------- - ------- - ------------------------- -------- ------- - ------------- -- ------- - ------------ - ------ -------------- - ----------------- - -------------------- ------- ------------------------- --------------------- ------------------- - ---------------- - ----------------------- - - ----- ------- - --- ------------------------- ----- -------------------- --------------------- -------------------------
在这个例子中,我们创建了一个银行账户类 BankAccount
。它有两个私有字段 #accountNumber
和 #balance
。我们还定义了公共方法 deposit
、withdraw
和 getBalance
,它们可以用来存钱、取钱和获取余额。
我们添加了私有方法 #printStatement
,它将银行账户号码和余额打印到控制台。我们还在类的外部定义了一个公共方法 printStatement
,它调用私有方法。
在 BankAccount
类的 constructor
方法中,我们初始化了私有字段 #accountNumber
和 #balance
。我们使用公共方法 deposit
和 withdraw
来更新 #balance
,并使用公共方法 getBalance
来访问它。最后,我们调用了公共方法 printStatement
,它调用了私有方法 #printStatement
。
我们用下面的命令来运行这个脚本:
node bank-account.js
这将打印以下输出:
Account number: 1234567890 Balance: 130
在这个例子中,我们使用 private 成员和方法来保护银行账户的机密信息。私有成员和方法只能被类中的其他方法访问,而不能被外部代码访问。
结论
ES12 中的 private 成员和方法是一个强大的工具,可以使你的代码更模块化和更安全。使用 #
符号定义私有成员和方法,然后像使用公共成员和方法一样使用它们。使用私有成
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6731a4b10bc820c58239949f