一、Object的起源
Object中文的意思为对象,而运用编程中,它是一种思想,一种方法,即面向对象。
我们从整体角度来看:
对象是要研究的任何事物。从一本书到一家图书馆,单的整数到整数列庞大的数据库、极其复杂的自动化工厂、航天飞机都可看作对象,它不仅能表示有形的实体,也能表示无形的(抽象的)规则、计划或事件。对象由数据(描述事物的属性)和作用于数据的操作(体现事物的行为)构成一独立整体。从程序设计者来看,对象是一个程序模块,从用户来看,对象为他们提供所希望的行为。在对内的操作通常称为方法。一个对象请求另一对象为其服务的方式是通过发送消息。
而说到面向对象方法:
面向对象方法(Object-Oriented Method)是一种把面向对象的思想应用于软件开发过程中,指导开发活动的系统方法,简称OO (Object-Oriented)方法,是建立在“对象”概念基础上的方法学。对象是由数据和容许的操作组成的封装体,与客观实体有直接对应关系,一个对象类定义了具有相似性质的一组对象。
OO方法起源于面向对象的编程语言(简称为OOPL)。50年代后期,在用FORTRAN语言编写大型程序时,常出现变量名在程序不同部分发生冲突的问题。鉴于此,ALGOL语言的设计者在ALGOL60中采用了以"Begin……End"为标识的程序块,使块内变量名是局部的,以避免它们与程序中块外的同名变量相冲突。这是编程语言中首次提供封装(保护)的尝试。此后程序块结构广泛用于高级语言如Pascal 、Ada、C之中。
60年代中后期,Simula语言在ALGOL基础上研制开发,它将ALGOL的块结构概念向前发展一步,提出了对象的概念,并使用了类,也支持类继承。70年代,Smalltalk语言诞生,它取Simula的类为核心概念,它的很多内容借鉴于Lisp语言。由Xerox公司经过对Smautalk72、76持续不断的研究和改进之后,于1980年推出商品化的,它在系统设计中强调对象概念的统一,引入对象、对象类、方法、实例等概念和术语,采用动态联编和单继承机制。
从80年代起,人们基于以往巳提出的有关信息隐蔽和抽象数据
类型等概念,以及由Modula2、Ada和Smalltalk和等语言所奠定的基础,再加上客观
需求的推动,进行了大量的理论研究和实践探索,不同类型的
面向对象语言(如:Object-c、Eiffel、c++、Java、Object-Pascal等)逐步地发展和建立起较完整的和雨后春笋般研制开发出来,OO方法的概念理论体系和实用的
软件系统。
面向对象源出于Simula,真正的
OOP由Smalltalk奠基。Smalltalk现在被认为是最纯的OOPL。
正是通过Smalltalk80的研制与推广应用,使人们注意到OO方法所具有的模块化、信息封装与隐蔽、抽象性、继承性、多样性等独特之处,这些优异特性为研制大型软件、提高软件可靠性、可重用性、可扩充性和可维护性提供了有效的手段和途径。
80年代以来,人们将面向对象的基本概念和运行机制运用到其它领域,获得了一系列相应领域的面向对象的技术。面向对象方法已被广泛应用于
程序设计语言、形式定义、设计方法学、
操作系统、
分布式系统、
人工智能、
实时系统、
数据库、人机接口、计算机
体系结构以及并发工程、综合集成工程等,在许多领域的应用都得到了很大的发展。1986年在
美国举行了首届"
面向对象编程、系统、语言和应用(OOPSLA'86)"国际会议,使面向对象受到世人瞩目,其后每年都举行一次,这进一步标志OO方法的研究已普及到全世界。
二、一个函数的标准形式及mechanism分析
在JS中一个函数根据所应包含的要点分为如下几类:
1、普通函数
应包括函数名,参数,返回值这几个要点,注意同名覆盖。
demo:
function add(a,b,c) {
return a + b + c;
}
当然参数和返回值是否包含应根据你自身的需求而定。
2、匿名函数
没有函数名,可以把函数赋值给变量和函数,或者作为回调函数使用。非常特殊的就是立即执行函数和闭包。
例如立即执行函数demo:
(function(){
console.log(1)
})()
3、高级函数
高级函数就是可以把函数作为参数和返回值的函数。如上面的闭包。ECMAScript中也提供大量的高级函数如forEach(), every(), some(), reduce()等等。
4、偏函数不做详细解释,以后会单独分析;箭头函数,在前面的文章已做分析。
小结:初始对于一个函数的认知,就得从普通函数的标准形式开始理解,才能进一步对延伸的函数作分析。