JavaScript简介
第五章




阵列(arrays)的运用是程式设计中一项种要的技术。每一种程式语言均以某种特定方式来表示阵 列。或许您已了解阵列在程式设计中的好处,但翻遍Netscape所提供的文件,并没有提及如何使 用阵列。这是因为JavaScript并不支援阵列。但是现在我将教您如何在JavaScript中使用阵列。

首先,阵列是干啥用的?您可以把它看成一长串的变数(variables)。假设您现在需要宣告10个变数 ,您可以一个个将10个变数宣告为 a, b, c ...,但当您需要100个或更多的变数时,这种方法将会 变得很麻烦。若您使用一个拥有10个元素(elements)的阵列(暂且命名为 'MyArray')来表示这10个 变数,则可以用 MyArray[1], MyArray[2], MyArray[3]...分别代表第一,二,三....个变数(很多程 式语言是从0开始当作第一个元素,但在JavaScript语法中是从1开始)。因此若您想将第一个元素 (或称变数)的值指定为17,您只要写成 MyArray[1]=17即可。由此可看出阵列的功用和一般变 数是相同的。不光如此,若您想将所有元素的值均指定为17,您只要写一个简单的回圈(loop)即 可:
for (var i=1;i<11;i++) MyArray[i]=17
for- 这个指令是告诉电脑其後的指令总共要执行几次。for- 回圈是从1开使,也就是电脑会先执 行MyArray[1]=17。然後 i 会增加1并接著执行MyArray[2]=17。 i 每次递增1直到 i=10为止。

接下来教您如何做阵列的初始化(initialization)。这个问题曾在 JavaScript Mailing list中讨论过。 (如果您想订阅 mailing list, 您只要在e-mail中填入 subscribe javascript-digest 并寄到 majordomo @obscure.org 即可。接著您每天就会收到一到二个约20-30kB的大档案,这些档案包括所有来自 JavaScript- list的信件)。


function initArray() {

      this.length = initArray.arguments.length

      for (var i = 0; i < this.length; i++)

      this[i+1] = initArray.arguments[i]

   }

您不需要了解这个函式(function)的意义,您只要知道怎麽用就好。如果您要宣告一个拥有三个元 素的阵列,且其值分别指定为 17,18,19,您只要写成 : var MyArray= new initArray(17,18,19)。您 也可以用字串(strings)当作元素的值 : var heyho= new initArray("This","is","酷")。因此您不必管元 素值的型式(type),即使混著用也行 : var Mixedup= new initArray(17,"yo",103)

下面我将对一个阵列 'Mixedup' 作初始化,并显示阵列的内容 :

Element No. 1: 17
Element No. 2: yo
Element No. 3: 103

其原始码如下:




当我昨天写一个小游戏时,我遇到一个您也可能会碰到的问题。当您想清除视窗或frame中的内 容时,Netscape文件中提到了一个函式可用-- 'document.clear()'。但当您将此函式写入网页中, 它并不会如预期的清除视窗或frame中的内容。而且 document.clear()在各种平台(platform)上似乎 都无效。Gordon McComb告诉我一个清除视窗或frame中内容的好方法,您可以试试 :

     document.close();

     document.open();

     document.write("

");

您不一定要写最後一行 document.write("

");,只有当您想在视窗中写入某些东西时才需要加 入此行。上述方法对frame亦有效。


接下来我们谈一个可以让您在不同文件之间穿梭的语法-- back() 和 forward() 两个函式。通常 我们在网页中加的 back- link和 Netscape- Navigator中的 "Back键" 功能上并不相同。Netscape- Navigator中的 "Back键" 是回到您history list中的上一页。您现在也可利用JavaScript做到相同的 功能。只要按下此 link ,您可以再度回到此页。JavaScript语法的原始码 如下 :





您也可以用 history.go(-1)history.go(1) 代替.


回主页 -