封装主要用于阐述对象中所包含的内容。封装概念通常由两部分组成:相关的数据(用于存储属性)、基于这些数据所能做的事(所能调用的方法)
封装的目的是将信息隐藏,即方法与属性的可见性。一般而言,封装包括封装数据和封装实现
在许多语言的对象系统中,封装数据是由语法解析来实现的,这些语言提供了public、private、protected这些关键字来限定方法和属性的可见性,这种限定分类定义了对象用户所能访问的层次
但javascript并没有提供对这些关键字的支持,只能依赖变量的作用域来实现封装特性, 而且只能模拟出 public 和 private 这两种封装性。除了ECMAScript6中提供的let之外,一般通过函数来创建作用域:
var myObject = (function(){
var name = 'match'; // 私有(private)变量
return {
getName: function(){ // 公开(public)方法
return name;
}
}
})();
console.log( myObject.getName() );// 输出:match
console.log( myObject.name ) // 输出:undefined
面向对象编程强调的是数据和操作数据的行为本质上是互相关联的,因此好的设计就是把数据以及和它相关的行为封装起来。举例来说,用来表示一个单词或者短语的一串字符通常被称为字符串。字符就是数据。但是关心的往往不是数据是什么,而是可以对数据做什么,所以可以应用在这种数据上的行为(计算长度、添加数据、搜索等等)都被设计成 String 类的方法。所有字符串都是 String 类的一个实例,也就是说它是一个包裹,包含字符数据和可以应用在数据上的函数
封装不仅仅是隐藏数据,还包括隐藏实现细节、设计细节以及隐藏对象的类型等
从封装实现细节来讲,封装使得对象内部的变化对其他对象而言是透明的,也就是不可见的。 对象对它自己的行为负责。其他对象或者用户都不关心它的内部实现。封装使得对象之间的耦合变松散,对象之间只通过暴露的 API 接口来通信。当修改一个对象时,可以随意地修改它的内部实现,只要对外的接口没有变化,就不会影响到程序的其他功能
原文链接:https://www.qiquanji.com/post/7011.html
本站声明:网站内容来源于网络,如有侵权,请联系我们,我们将及时处理。
微信扫码关注
更新实时通知