如何实现JavaScript中的6种私有属性方法?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2987个文字,预计阅读时间需要12分钟。
目录:属性、代理、Symbol、WeakMap
目录
- _prop
- Proxy
- Symbol
- WeakMap
- #prop
- ts private
- 总结
class 是创建对象的模版,由一系列属性和方法构成,用于表示对同一概念的数据和操作。
有的属性和方法是对外的,但也有的是只想内部用的,也就是私有的,那怎么实现私有属性和方法呢?
不知道大家会怎么实现,我梳理了下,我大概用过 6 种方式,我们分别来看一下:
_prop
区分私有和公有最简单的方式就是加个下划线 _,从命名上来区分。
比如:
class Dong { constructor() { this._name = 'dong'; this._age = 20; this.friend = 'guang'; } hello() { return 'I\'m ' + this._name + ', ' + this._age + ' years old'; } } const dong = new Dong(); console.log(dong.hello());
这里的 Dong 就有私有属性 _name、_age,公有属性 friend。
但是这种方式只是一种命名规范,告诉开发者这个属性、方法是私有的,不要调用,但终究不是强制的,如果别人要用也阻止不了。
本文共计2987个文字,预计阅读时间需要12分钟。
目录:属性、代理、Symbol、WeakMap
目录
- _prop
- Proxy
- Symbol
- WeakMap
- #prop
- ts private
- 总结
class 是创建对象的模版,由一系列属性和方法构成,用于表示对同一概念的数据和操作。
有的属性和方法是对外的,但也有的是只想内部用的,也就是私有的,那怎么实现私有属性和方法呢?
不知道大家会怎么实现,我梳理了下,我大概用过 6 种方式,我们分别来看一下:
_prop
区分私有和公有最简单的方式就是加个下划线 _,从命名上来区分。
比如:
class Dong { constructor() { this._name = 'dong'; this._age = 20; this.friend = 'guang'; } hello() { return 'I\'m ' + this._name + ', ' + this._age + ' years old'; } } const dong = new Dong(); console.log(dong.hello());
这里的 Dong 就有私有属性 _name、_age,公有属性 friend。
但是这种方式只是一种命名规范,告诉开发者这个属性、方法是私有的,不要调用,但终究不是强制的,如果别人要用也阻止不了。

