JavaScript概述
北京航空航天大学 陈冲 麦中凡
一、引言
Internet的迅猛发展,特别是WWW的日益普及很大程度上得益于网络上的超媒体信息。为了满足Web用户对信息资源无止境的渴求,开发者们在不断地扩充超媒体语言的能力。从静态文本到静态图像,从静态图像到动态图像,随后又加入了声音、影像、三维动画等等。另一方面,用户已不满足于只是坐在那里被动地浏览,他们希望服务方在主页中提供更多的交互性,以便他们也可以加入Web游戏中。Java语言以及另外一些脚本语言(Script)的出现满足了服务方和用户方的这种要求。它们为Web内容开发者提供了一种灵活简便的Web页面设计途径。这其中,JavaScript在众多脚本语言中脱颖而出,被越来越多的Web作者认可和使用。如果你经常上网漫游,你就会同意我所说的。比如,当你进入某个主页时,这个主页会弹出一个写有Cookies字样的提示框,让你输入一些个人信息,其实这就是JavaScript脚本在起作用。
JavaScript带给Web强大的功能,但本文并不介绍JavaScript的编程细节,只是阐述JavaScript的一些基本概念。这些概念对于进一步学习是十分必要的,特别是其中的一些概念对于某些专家也极易混淆。下面,笔者将从JavaScript的特点、JavaScript与其他语言的比较以及JavaScript的局限性等几个方面把你带入JavaScript的世界。
二、JavaScript的特点
JavaScript是一种基于对象的脚本语言。使用它可以开发Internet客户端的应用程序。JavaScript在HTML页面中以语句形式出现,并且可以执行相应的操作。
有些人可能认为JavaScript是Java的子集,就像VBScript和VB的关系一样。实际上,JavaScript和Java在语言上没有什么直接的关系,它也不是Sun公司开发的产品。它是Netscape公司为了扩充Netscape
Navigator浏览器功能而开发的一种可以嵌入在Web主页中的编程语言。早期称之为LiveScript,后来为了利用Java的功能同时借用它的流行性,把它改名为JavaScript。它具有如下特点。
1.JavaScript是一种脚本语言
脚本是一种能够完成某些特殊功能的小“程序段”。这些小的“程序段”并不是像一般程序那样被编译,而是在程序运行过程中被逐行地解释。在脚本中所使用的命令与语句集称为脚本语言。
JavaScript是一种脚本语言,它的标识符形式上与C,C++,Pascal和Delphi十分类似。另外,它的命令和函数可以同其他的正文和HTML标识符一同放置在用户的Web主页中。当用户的浏览器检索主页时,将运行这些程序并执行相应的操作。目前只有Netscape
Navigator 2.0及其更高版本和Internet Explorer 3.0具备这种功能。
2.JavaScript是基于对象的语言
面向对象程序设计力图将程序设计为一些可以完成不同功能的独立部分(即对象)的组合体。相同类型的对象作为一个类(class)被组合在一起(例如:“公共汽车”对象属于“汽车”类)。基于对象的语言也是一种面向对象语言,但它本身已具有创建完成的对象。例如,在JavaScript中,你不必创建“日期”这个对象,因为该语言已有这一对象,你可以直接使用它。
3.JavaScript是事件驱动的语言
当你在Web主页中进行某种操作时,就产生了一个“事件”。事件几乎可以是任何事情:敲击一个按钮、拖动鼠标等均可视为事件。JavaScript是事件驱动的,当事件发生时,它可对之作出响应。具体如何响应某个事件取决于你的事件响应处理程序。
4.JavaScript是安全的语言
JavaScript被设计为通过浏览器来处理并显示信息,但它不能修改其它文件中的内容。也就是说,它不能将数据存储在Web服务器或用户的计算机上,更不能对用户文件进行修改或删除操作。
5.JavaScript是平台无关的语言
对于一般的计算机程序,它们的运行与平台有关。例如,除非你使用一个仿真器来模拟Windows环境,否则不可能在Macintosh上运行一个Windows应用程序。JavaScript则并不依赖于具体的计算机平台(虽然有一些限制),它只与解释它的浏览器有关。不论你使用Macintosh还是Windows,或是UNIX版本的Netscape
Navigator,JavaScript都可正常运行。
6.其他一些特点
目前,除JavaScript以外,还有许多用于Web设计的工具,它们在一些功能上甚至超过JavaScript(例如,QuickTimeVR、ShockWave、RealAudio、TrueSpeech)。然而,重要的是,为了使用这些工具,你需要购买相应的开发环境,而且这些工具往往并不便宜。而JavaScript的功能则是与浏览器相联的,无需任何附加的软件。
三、JavaScript与其它语言的比较
1.JavaScript不是Java
Java是由Sun公司开发的一种与平台无关的、面向对象的程序设计语言,它与JavaScrip
t基于对象的结构相反。Java可以用来设计独立的应用程序,也可以用来创建一种称为Applets的小应用程序。经过编译后,Applets成为一种平台无关的字节代码,这种Applets可以运行在任何平台上,只要该平台具备能够操作Applets的Java虚拟机即可。这样,开发人员可以摆脱为某个特定的平台编译代码的束缚。
下面列出了JavaScript与Java之间其它的一些主要区别。
(1)Java程序被编译成为字节代码文件,以供客户方(浏览器)运行;JavaScript则是将字符正文传递给客户方并由客户方解释执行。
(2)JavaScript是基于对象的,它自身具有已创建完毕的对象;而Java则是面向对象的,对象必须从类中创建。
(3)JavaScript的代码以字符的形式嵌入在HTML文档中;Javaapplets则是由文档引用,其代码以字节代码的形式保存在另一个独立的文件中。
(4)在HTML文档中,用标识〈SCRIPT〉标明JavaScript脚本;而Java applets则用标识〈APP
LET〉来标明。
(5)JavaScript采用弱类型,即一个变量不必声明其类型,一个被用于表示字符串的变量在后面的程序中也可用来表示数字;而Java则采用强类型,这意味着必须事先声明变量,并且该变量只可用于表示一种类型的数据(例如或者一个整数或者一个字符串)。
(6)JavaScript采用动态联编,这意味着对象的引用只有在运行时才被检查。而Java,则采用静态联编,程序中所引用的对象,在编译时就应该已经存在。
2.Java Script和VB Script
VBScript是Microsoft公司开发的Visual Basic程序设计语言家族的新成员。它是Visual
B asic轻量级的子集。与JavaScript相同,它被嵌入在HTML主页中,当浏览器检索到它时对其进行解释。使用VBScript,你可以验证表单数据的合法性,动态产生用户主页,甚至于无需进行服务器方编程,就可以直接在Web页面内编写小游戏程序。VBScript被设计用来与ActiveX控件和嵌入在HTML主页中的其他对象协同工作。另外,与JavaScript不同,VBScript还可以作为普通的脚本语言在其他的应用程序中使用。
3.JavaScript不是LiveWire
LiveWire与LiveWire Pro是Netscape发行的新产品的集合。LiveWire不仅仅是一种脚本语言。尽管它包括了一种新的服务器方、同Java兼容的脚本语言,但这只是它功能的一小部分。LiveWire包括一个所见即所得的编辑/浏览器,一个图形Web节点管理器。在Pro的版本中,它还支持Informix,Oracle,Sybase和Microsft公司的SQL数据库。LiveWire只能运行在Netscape服务器上。
目前JavaScript并不支持数据库的直接存取操作。但在不久的将来,应该可以使用JavaScript来创建并操作大型数据库。
4.JavaScript不是Perl
Perl是一种解释型语言,它主要用于读取、解释和显示打印正文文件。它常常被用于处理E\|Mail的请求与生成。Perl的语言形式与使用很类似于C语言,它也可以将一个很大的文本文件读入到一个单个的字符串中。你可以使用Perl来读取格式数据,并将信息包装为可读的格式返回给用户。Perl也可以返回一个动态创建的HTML主页。除此之外,由于Perl是运行在服务器而不是客户机上,它还可以对服务器的驱动器进行读/写操作。
JavaScript目前尚不能进行正文文件的操作,它也不能对输入的信息流进行分析。
四、JavaScript的局限性
JavaScript为Web内容设计人员提供了极大的灵活性和控制手段。它是一种优秀的“粘合剂”,能够将一个Web节点中的不同组成部分捆绑在一起,成为一个紧密结合的信息源。然而,像任何事物一样,JavaScript也有它的局限性。
1.浏览器相关的局限性
目前,WWW上有很多浏览器,如Netscape,Explorer,Mosaic,HotJava等,但并不是每种浏览器都支持JavaScript。到现在为止,只有Netscape Navigator
2.0,Netscape Navigator Gold 2.0,Netscape Navigator 3.0完全支持JavaScript,Internet
Explorer3.0只是部分支持,其他浏览器皆不支持。支持和不支持JavaScript的浏览器在显示一个带有JavaScript脚本的主页时,结果全然不同。如果你不相信,可以使用Netscape
Navigator3.0浏览一个带有JavaScript的主页,然后再使用Internet Explorer 2.0比较一下。
2.平台相关的局限性
尽管JavaScript可以运行在任何安装有Netscape Navigator的平台上(Windows,Macintosh和Unix),但并不是JavaScript的所有部分在这些平台上都按相同的状况运行。下面用一个例子来说明这个问题。
通过random number generation(随机数据生成),你可以使用JavaScript创建一个卡片游戏。这个游戏需要能够随机地从卡片组中选取一张卡片,因此,随机数生成是十分重要的。然而,随机数方法只能在Unix平台上运行。
3.安全性有关的局限性
JavaScript的设计目标在于“Web安全性”,它比以前任何一种方法都更能保证Web的安全(例如:perl和CGI),这自然是牺牲JavaScript的一些功能换来的。
(1)JavaScript不能打开、读、写、保存用户计算机上的文件。它有权访问的唯一信息就是它所嵌入的那一个Web主页中的信息。
(2)JavaScript不能打开、读、写、保存Web服务器上的文件。尽管你可以使用它来提交HTML命令,但HTML命令也不能打开那些文件。
(3)JavaScript不可能用来编写破坏计算机上任何资源的“病毒”。它产生的最糟糕的事情也不过是一个设计不良好的主页可能会显示一些错误信息(可能需要你关闭浏览器),仅此而已。
简而言之,JavaScript只生存于它自己的小小世界——Web主页的世界里。
五、进入JavaScript的世界
1.JavaScript的运行环境
为了创建支持JavaScript的Web主页,必需具有以下的一些基本硬件与软件配置。
(1)硬件
为了安全地支持JavaScript,Netscape推荐使用如下系统配置。
①对于80X86的系统,至少需要8MB内存,12MB到16MB是最佳配置。事实上,这个配置主要是为了适应操作系统的需要而不是浏览器本身(例如:
Windows 95指定12MB以上,Windows NT至少需要12MB)。
②一个可以显示256色或更多颜色的显示器,这主要是浏览器的需要。当然,高分辨率的屏幕显示(800×600,1024×768等等)可以显示出更多的信息,但是标准的显示器为640×480和800×600。
③一个合适的硬件基础,可以使得用户按照正常的速度访问Internet,建议使用Pentium
75以上的CPU,16MB内存。
(2)软件
一个好的基本软件开发环境如下。
①Netscape Navigator 2.0或以上版本。
②一个简单的正文编辑器(如NotePad,WordPad或EMACS,甚至MSDOS的Edit)。
③一个灵活的图像处理软件如PaintShop Pro或PhotoShop。
为了浏览带有JavaScript的主页,只需要一个支持JavaScript的浏览器就可以了。但若是希望建立自己的主页,就可能用到上面列出的软件工具。
另外,目前还没有所谓的JavaScript编辑器,几个流行的HTML编辑器(如HotDog
Pro,HOTMetaL和WebEditor)没有一个支持JavaScript。在创作主页时,可以使用它们来创建初始的主页,然后使用一个普通的文本编辑器加入JavaScript代码。
2.一个简单的小例子
前面介绍了一些JavaScript的基本概念,在本文的最后,用一个小例子给读者一些关于Ja
vaScript的感性认识。与其他编程语言一样,我的第一个脚本将在屏幕上输出“Hello
Web World"。程序如下:
〈Html〉\=
〈Script Language=“JavaScript”〉
document.write(“Hello Web World!〈br〉”);
〈/Script〉
〈/Head〉
〈Body〉
〈/Body〉
〈/Html〉
使用Netscape浏览这个HTML文件,屏幕上输出“Hello Web World”。其中,〈html〉、〈head〉、〈body〉、〈Script
Language…〉为HTML文档标识。JavaScript的代码部分由〈Script〉……〈/Script〉标识括起来,可以将〈Script〉标识放于〈Head〉标识或〈Body〉标识之中,如果在文档中有多个〈Script〉,它可以任意分布于〈Head〉或〈Body〉之中。〈Script〉标识的语法如下:
〈Script Language=“JavaScript”〉
//……JavaScript代码
〈/Script〉
正如所见的,它包括两部分:
(1)〈Script〉标识,它用来通知解释器,有脚本嵌入在此标识之中;
(2)Language属性,它用来说明在标识之中是脚本语言。
通过使用语句document.write( ),可以显示用户信息,它是JavaScript基本的输出。看来编写一个脚本并不难。