学习面向对象之面向对象的基本概念:对象和其他基本要素


Posted in Javascript onNovember 30, 2010

什么是对象

对象是一件事,一个实体,一个名词,概括来说:万物皆是对象

一个对象保存了某些信息,并知道如何执行某些操作

对象的状态和行为

对象具有状态,状态是对对象的一个或多个属性的描述(如:一个灯 "灯是亮的  这是它的状态")

对象具有行为,行为是对象为为改变自身的状态而发生的作用和反作用(如:一个灯 "把灯关了"  这是它的行为)

面像对象中最原始的单元就是对象

封装

把数据和影响这个数据的操作聚合成一个对象的行为称为“封装”

封装隐藏对象的属性和实现细节,公对公开接口,控制程序中属性的读和修改的访问级别

从外视图看,在一个对象内封装的数据是隐藏的

封装的目的增强安全性和简化编程,使用者不必了解具体的实现细节,而只要通过对象对外开发的接口,一特定的访问权限来使用对象的成员

消息和方法

消息发送

一个对象通过发送“消息”访问另一个对象,这样的访问,称为“消息发送”,是一个对象访问另一个对象的唯一的方法

消息发送过程中包含了:发送器->消息【名称和参数】->接收器 

学习面向对象之面向对象的基本概念:对象和其他基本要素

消息

一个“消息”由一个操作的名称和所有必须的参数组成,当一个对象给另一个对象发送消息时,发送者请求消息接受者执行指定的操作,并(有可能)返回信息,当接受者接收消息时,它以它所知道的方式来执行被请求的操作。这样的请求不规定如何执行一个操作。对于发送者的这种信息总是被隐藏的

消息名称

一个消息包括操作名称和该操作所要求的全部参数,有时,通过名称来查阅操作是很有用的,而不考虑它的参数,我们把一个操作的名称称为“消息名称”。

方法

当一个对象接收一个消息时,它通过执行一种方法来完成被请求的操作。这种“方法”就是一步一步执行算法。当消息名称和操作名称匹配时,响应接收到的消息。正如由信息隐藏原理所规定的。方法始终是一个对象私有表达的一部分,而不是公式接口的一部分。

签名

与消息发送相关的一个更有用的概念是签名,当一个消息由一种方法和方法所需的参数组成时,“签名”就是这种方法的名称,参数类型和返回对象的类型,签名是方法输入的正规说明书,也是方法输出的正规说明书。它规定了使用这种方法所必需的东西

Javascript 相关文章推荐
JS 动态加载脚本的4种方法
May 05 Javascript
JavaScript面向对象程序设计三 原型模式(上)
Dec 21 Javascript
jQuery extend 的简单实例
Sep 18 Javascript
使用js显示当前时间示例
Mar 02 Javascript
jQuery中click事件用法实例
Dec 26 Javascript
jquery.cookie.js使用指南
Jan 05 Javascript
jQuery+Pdo编写login登陆界面
Aug 01 Javascript
Javascript快速实现浏览器系统通知
Aug 26 Javascript
jQuery实现打开网页自动弹出遮罩层或点击弹出遮罩层功能示例
Oct 19 jQuery
解决Vue 浏览器后退无法触发beforeRouteLeave的问题
Dec 24 Javascript
微信小程序canvas分享海报功能
Oct 31 Javascript
Nuxt 项目性能优化调研分析
Nov 07 Javascript
基于JQuery的asp.net树实现代码
Nov 30 #Javascript
JQUERY设置IFRAME的SRC值的代码
Nov 30 #Javascript
juqery 学习之四 筛选过滤
Nov 30 #Javascript
juqery 学习之四 筛选查找
Nov 30 #Javascript
用XMLDOM和ADODB.Stream实现base64编码解码实现代码
Nov 28 #Javascript
xss文件页面内容读取(解决)
Nov 28 #Javascript
用js来解决ajax读取页面乱码
Nov 28 #Javascript
You might like
PHPMailer的主要功能特点和简单使用说明
2014/02/17 PHP
PHP获取某个月最大天数(最后一天)的方法
2015/07/29 PHP
PHP+JavaScript实现无刷新上传图片
2017/02/21 PHP
php实现微信原生支付(扫码支付)功能
2018/05/30 PHP
tp5(thinkPHP5框架)使用DB实现批量删除功能示例
2019/05/28 PHP
thinkPHP5框架接口写法简单示例
2019/08/05 PHP
PHPstorm启用自动换行的方法详解(IDE)
2020/09/17 PHP
如何简单地用YUI做JavaScript动画
2007/03/10 Javascript
jquery控制listbox中项的移动并排序
2009/11/12 Javascript
让div层随鼠标移动的实现代码 ie ff
2009/12/18 Javascript
Javascript数组的排序 sort()方法和reverse()方法
2012/06/04 Javascript
jQuery仿天猫实现超炫的加入购物车
2015/05/04 Javascript
JavaScript中的Promise使用详解
2015/06/24 Javascript
jquery判断复选框是否被选中的方法
2015/10/16 Javascript
一篇文章掌握RequireJS常用知识
2016/01/26 Javascript
浅谈express 中间件机制及实现原理
2017/08/31 Javascript
nodejs连接mysql数据库及基本知识点详解
2018/03/20 NodeJs
深入理解js 中async 函数的含义和用法
2018/05/13 Javascript
详解使用create-react-app快速构建React开发环境
2018/05/16 Javascript
微信小程序自定义联系人弹窗
2020/05/26 Javascript
[14:57]DOTA2 HEROS教学视频教你分分钟做大人-幽鬼
2014/06/13 DOTA
[47:21]Liquid vs TNC Supermajor 胜者组 BO3 第一场 6.4
2018/06/05 DOTA
c++生成dll使用python调用dll的方法
2014/01/20 Python
python打开网页和暂停实例
2014/09/30 Python
利用Python循环(包括while&for)各种打印九九乘法表的实例
2017/11/06 Python
手机端用rem+scss做适配的详解
2017/11/15 HTML / CSS
世界上最大的在线学习和教学市场:Udemy
2017/11/08 全球购物
static全局变量与普通的全局变量有什么区别
2014/05/27 面试题
一道SQL存储过程面试题
2016/10/07 面试题
教师实习期自我鉴定
2013/10/06 职场文书
应届生自我鉴定
2013/12/11 职场文书
同步小康驻村工作简报
2015/07/20 职场文书
女儿满月酒致辞
2015/07/29 职场文书
2016年九九重阳节活动总结
2016/04/01 职场文书
Java 将PPT幻灯片转为HTML文件的实现思路
2021/06/11 Java/Android
vue+elementUI实现表格列的显示与隐藏
2022/04/13 Vue.js