我是Javascript的新手,我正在阅读文档和
根据MDN文件:-
保持对象的内部状态私有,并且通常使明确划分其公共接口和私人内部状态,称为封装。
他们没有提到
如何保持对象的内部状态私有?
还进一步提到,
在不强制执行这种访问的语言中,程序员使用命名约定,例如以下划线开头的名称表明该财产应被视为私有财产。
那么这行是什么意思
以下划线开头的名称,表示属性应该被认为是私人的。
这是否意味着,如果我将_
放在属性名称之前,它将变为私有,变为私有和变为私有之间没有区别吗。放一个下划线告诉Javascript这个属性是私有的吗?
此外,他们还没有提供任何具体的代码来解释我只能找到伪代码
class Student : extends Person
properties
year
constructor
Student(name, year)
methods
introduceSelf()
canStudyArchery() { return this.year > 1 }
我在谷歌上搜索了一下,发现闭包是用来实现封装行为的,但MDN文档在任何地方都没有说明这一点Object-oriented_programing#encapsulation
问题:-如何在没有闭包的情况下在Javascript中实现封装?我们可以使用类似Object.freeze
的东西吗?有人可以用一个示例来解释吗
谢谢。
这是否意味着如果我将_放在属性名称之前,它就会变成私人
否。字段名称之前的_
用于向读取器传达这些字段意味着是私有的;从技术上讲,它们不是私人的。其他代码可以访问它们并对它们进行变异。
真正私有的字段最近在Javascript语言中引入。
在引入上述功能之前,Javascript开发人员使用不同的技术来实现私有字段——使用闭包就是其中之一。