1.3-封装

封装的 目的 是将信息隐藏。一般而言,我们讨论的封装是 封装数据封装实现。更广义的封装,不仅包括封装数据和封装实现,还包括 封装类型封装变化

在许多语言的对象系统中,封装数据是由语法解析来实现的,这些语言也许提供了private、public、protected 等关键字来提供不同的访问权限。

但JavaScript 并没有提供对这些关键字的支持,我们只能依赖 变量的作用域 来实现封装特性,而且只能模拟出public 和private 这两种封装性。

封装的目的是将信息隐藏,封装应该被视为“任何形式的封装”,也就是说,封装不仅仅是隐藏数据,还包括隐藏实现细节、设计细节以及隐藏对象的类型等。

从封装实现细节来讲,封装使得对象内部的变化对其他对象而言是透明的,也就是不可见的。对象对它自己的行为负责。其他对象或者用户都不关心它的内部实现。封装使得对象之间的耦合变松散,对象之间只通过暴露的API 接口来通信。

封装数据: 常用。
封装类型: JavaScript 没有能力,也没有必要做。
封装变化: 从设计模式的角度出发,封装在更重要的层面体现为封装变化。通过封装变化 的方式,把系统中稳定不变的部分和容易变化的部分隔离开来, 在系统的演变过程中,我们只需要替换那些容易变化的部分,如果这些部分是已经封装好的,替换起来也相对容易。这可以最大程度地保证程序的稳定性和可扩展性。

封装数据

 var myObject = (function () {
   var __name = 'sven'; // 私有(private)变量
   return {
       getName: function () { // 公开(public)方法
           return __name;
       }
   }
})();

console.log(myObject.getName()); // 输出:sven
console.log(myObject.__name) // 输出:undefined
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值