414 字
2 分钟
封装
封装
封装的目的是将信息隐藏。一般而言,我们讨论的封装是封装数据和封装实现。这一节将讨 论更广义的封装,不仅包括封装数据和封装实现,还包括封装类型和封装变化。
1. 封装数据
在许多语言的对象系统中,封装数据是由语法解析来实现的,这些语言也许提供了 private 、 public 、 protected 等关键字来提供不同的访问权限。
但 JavaScript并没有提供对这些关键字的支持,我们只能依赖变量的作用域来实现封装特性, 而且只能模拟出 public 和 private 这两种封装性。
var myObject = (function () { var _name = 'sven'; return { getName: function () { return _name; } }})()console.log(myObject.getName());2. 封装实现
封装的目的是将信息隐藏,封装应该被视为“任何形式的封装”,也就是说,封装不仅仅是 隐藏数据,还包括隐藏实现细节、设计细节以及隐藏对象的类型等
从封装实现细节来讲,封装使得对象内部的变化对其他对象而言是透明的,也就是不可见的。 对象对它自己的行为负责。其他对象或者用户都不关心它的内部实现。封装使得对象之间的耦合松散,对象之间只通过暴露的 API接口来通信。当我们修改一个对象时,可以随意地修改它的 内部实现,只要对外的接口没有变化,就不会影响到程序的其他功能。