在面向对象的程序设计语言中,共有的概念是强类型和支持以类为基础的继承机制.根据这个评判标准,很容易就能够将JavaScript从真正的面向对象语言中区分出来.但是,我们又会发现JavaScript大量地使用了对象,而且它还有自己的以原型对象为基础的继承机制,这些又说明JavaScript是一种真正的面向对象语言.它从大量其他的面向对象语言中获取了灵感,这些语言采取以原型对象为基础的继承机制,而不是采用以类为基础的继承机制.
虽然JavaScript不是一种以类为基础的面向对象程序设计语言,但是它在模拟像Java和C++这样的以类为基础的语言时是相当出色的.
对象是一个数据结构,包含各种命名了的数据段,而且还能包含对这些数据段进行操作的各种方法.JavaScript中的对象可以具有大量的属性,而且还可以动态地将这些属性添加到对象中.这在像Java和C++这样的强类型语言中是做不到的.在那些语言中,每个对象都有一套预定义的属性,而且每个属性都有有预定义的类型.在使用JavaScript在对象来模拟面向对象的程序设计方法时,通常是给每个对象预定义一套属性以及这些属性的数据类型.
在Java和C++中,类定义了对象的结构,类确定了一个对象包含有哪些域(字段)以及每个域包含什么样的数据类型.类也定义了对对象进行操作的方法.虽然JavaScript并没有正式的类的概念,但是我们可以用构造函数和原型对象模拟出类来.
一个Java类的成员有四种可能的基本类型:实例属性,实例方法,类属性以及类方法.那么在JavaScript中是如何模拟它们的呢? 请看下面的代码:
1
<html>
2
<head><title>类成员</title></head>
3
<body>
4
<script language="javascript">
5
// 真正基于类的面向对象语言中,类有四种基本成员:
6
// 实例属性,实例方法,类属性,类方法。
7
// JavaScript虽不是基于类的语言,也没有类的概念,但是它可以模拟出面向对象的设计
8
9
>
2
3
4
5
6
7
8
9
----摘录之《JavaScript权威指南》