分享一个Javascrip小技巧:Javascript中是如何定义私有属性(Private Properties)的?
和很多高级语言不同,Javascript 中没有 public、private、protected 这些访问修饰符(access modifiers),而且长期以来也没有私有属性这个概念,对象的属性/方法默认都是public的。虽然目前 class 的私有属性特性已经进入了 Stage3 实验阶段。通过 Babel 已经可以使用,并且 Node v12 中也增加了对私有属性的支持,但这并不妨碍我们用 JS 的现有功能实现一个私有属性特性,以加深对这一概念的理解。
私有属性(方法)的意义在于将模块的内部实现隐藏起来,而对外接口只通过public成员进行暴露,以减少其他模块对该模块内部实现的依赖或修改,降低模块的维护成本。
IIFE 实现
IIFE(立即执行函数) 大家应该耳熟能详了,IIFE 经常被用来:
定义一个自执行的匿名函数 创建一个局部作用域,避免对全局产生污染
基于以上特性,用 IIFE 可以给一个对象实现简单的私有属性:
测试一下:
IIFE 的实现简单易懂,但是只能作用于单个对象,而不能给 Class 或者构造函数定义私有属性。
请先登录后,再回复
行家里手-技能共享平台