如何用JS对象代理实现对象的私有属性

今天我们来聊聊私有属性,在其他的高级语言中很容易能实现私有属性的功能,在JavaScript中怎么实现对象的私有属性呢?首先我们聊聊私有属性运用的需求场景,比如我们在对象里用 _ 符号开头的形式定义对象的私有属性,不希望外部环境读取私有属性,如下段代码所示:
1 | let bankAccount = { |
我们希望读取对象 _balance 的私有属性或删除对象的 _balance 属性,会有如下的提示:
1 | // don't allow reading the balance |
那我们该如何实现呢?这时候我们可以使用 JS 代理,针对 _符号开头的私有属性进行特殊的逻辑处理(你也可以用其他的符号自定义私有属性),废话不多说,上代理的实现的代码逻辑,以下为代理拦截器方法的代码:
1 | let proxyHandler = { |
接下来,我们来验证下上述代码是否可行:
1 | const hidePrivateFields = (target, prefix = "_") => { |
- 标题: 如何用JS对象代理实现对象的私有属性
- 作者: Jacshuo
- 创建于 : 2022-06-25 20:26:13
- 更新于 : 2023-07-20 10:36:24
- 链接: https://blog.imade.life/2022/06/25/如何用JS对象代理实现对象的私有属性/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论