我们在学习javascript的时候经常会听到一些关于javascript的介绍,比如“基于对象”、“原型”等等。
严格的讲,JavaScript不是一种面向对象的语言,因为它没有提供面向对象语言所具有的一些明显特征,例如继承和多态。因此,JavaScript设计者把它称为“基于对象”,而不是“面向对象”的语言。本文简单研究一下javascript面向对象的基础知识。
JavaScript 语言是通过一种叫做 原型(prototype)的方式来实现面向对象编程的。
先简单研究一下,面向对象和面向过程的区别,再来研究一下javascript面向对象的相关知识。
面向过程:面向过程的设计方法中最经典的一句话是“自顶向下,逐步细化”
面向对象的特性
封装:此特性可隐藏对象内部的实现细节,对外提供一致的访问接口 。
聚合:将多个对象组合起来,实现更复杂的功能。
继承:简单的代码复用机制,使子类拥有父类的特性。
多态 :以一致的方式使用不同的实现,实现接口不变性。
属性:属性描述了对象的状态 。
方法 :是对象具有可实施的动作 。
对象的使用
声明和实例化 (new)
JavaScript中没有类的概念,创建一个对象只要定义一个该对象的构造函数并通过它创建对象即可 。
javascript中可以通过构造函数来创建对象并实例化,构造函数的写法和普通的函数形式类似,唯一的区别是构造函数的名称首字母大写,在构造函数中可以使用this指代对象的属性以区别于参数,这一点和其他编程语言,比如说java是一致的。另外,在构造函数中,还可以定义方法。
举例说明,User对象有name,addr,phone属性和printUser方法,使用构造函数进行定义,示例代码如下:
其中,构造函数定义方法时可以直接定义也可以引用在构造方法外声明的函数。
可以使用构造函数new一个对象,然后调用对象的方法,这一点和java也是一致的。
对象的引用 :JavaScript中对象存活的依据。
对象的废除
Null
必须把对象的所有引用都设为null,对象才会被清除
JavaScript中的对象包含几大部分:
语言核心:变量常量、运算符、表达式、数据类型、控制语句等 。
基本的内置对象:String、Date、Math等 。
浏览器对象:window、Navigator、Location等 。
文档对象 :Document、Form、Image等。
以浏览器对象中的window为例,它的属性和方法主要有以下这些:
使用树形图表示会更加形象:
javascript中的事件处理方式:“发生――处理” 模式
Web页中存在很多“发生-处理”这样的关系,比如一个文本框突然没有了焦点或字符数量改变了,当发些事件时系统就调用监听这些事件的函数。如此,整个系统可以使用事件的发生来驱动运作,这就是所谓的事件驱动。
下面实现一个将输入的小写字母转化为大写字母的简单例子,其中使用到了onkeyup事件,表示松开按下的键盘时触发的事件。实例代码如下:
页面:
javascript代码:
这样就可以实现在输入内容时将小写字母转换为大写字母。
本文简单研究了javascript中关于对象的基础知识,当然,javascript中的对象还有很多深层次的内容,比如说原型(prototype),关于这部分留待以后研究了。