JavaScript,class类如何通过关键字#定义私有属性?
发布于 作者:苏南大叔 来源:程序如此灵动~

JavaScript
的高级语法的发展总是落后其它的高级编程语言,比如:javascript
中的类的写法就曾经是个很大的难题。直到es6
标准的出现,这种情况才得到好转。本文将讲述目前的浏览器及node
都支持的class
中的私有属性的写法。

苏南大叔的“程序如此灵动”博客,记录苏南大叔的代码编程经验感悟。本文测试环境:win10
,chrome@116.0.5845.141
,node@16.14.2
。本文涉及的是:JavaScript
中class
中的私有属性的写法。
传统的私有属性写法"_prop"
以前的时候,大家都是在属性名称前加一个下划线“_”,表示这个属性是个非公有的属性。但这是个掩耳盗铃的写法,其本质上还是个大家都可以访问的属性。
输出:

es6
最新标准私有属性写法"#prop"
普通的object
对象,是不可以定义以#
开头的键的。所以,这种情况放弃讨论。
js
中的类class
可以定义#
开头的私有属性。测试代码:

对于私有属性来说:
["#prop"]
的写法,拿到的值是undefined
。.#prop
的写法,直接报错Private field '#name' must be declared in an enclosing class
。
在typescript
里面,class
是有private
关键字的。这个后续文章待续。
类内部可以公开私有属性
在类的内部,是可以通过this.#prop
读取到私有属性的。如果在这种读取私有属性的办法,包装在一个getter
里面的话,就和一个可变成的普通属性没有啥区别了。测试代码:
输出:

相关文章
结束语
更多nodejs
的经验文章,可以参考苏南大叔的经验文章:


