JavaScript 教学 |
|
JavaScript 没有显示的数组数据类,然而您可以用预定义的 Array 对象及其方法提供对创建任何数据类型的数组的支持。数组是一套数值的序列,它用一个名字和索引所组成。
创建数组
有两 种方法来定义一个数组:
arrayObjectName = new Array(element0, element1, ..., elementN)
arrayObjectName = new Array(arrayLength)
这里 arrayObjectName 即可以是存在的对象,也可以是一个新的对象。element0, element1, ..., elementN 是数组元素的值,arrayLength 是数组初始化的长度。
赋值及引用
您可以这样来给数组赋值:
emp[0] = "apple"
也可以在创建数组时给它赋值:
emp = new Array(apple,orange,banana)
您这样来引用数组的第二个元素:emp[1]
注意:所有的数组元素第一个索引都是从零开始的,引用上面的第一个元素应当这样:emp[0]
Array 方法
方法 | 描 述 |
---|---|
concat | 合并两个数组并返回一个新数组 |
join | 合并一个数组内所有元素为一个字符串 |
pop | 删除数组内最后一个元素并返回该元素 |
push | 在数组尾部增加一个或多个元素并返回该数组的新长度值 |
reverse | 将数组元素的位置进行反转 |
shift | 删除数组内第一个元素并返回该元素 |
slice | 抽取数组内一部分元素并返回一个新数组 |
splice | 从一个数组中删除元素添加新元素 |
sort | 对数组中的元素进行排序 |
unshift | 加入一个或多个元素到数组顶端并返回数组的新长度 |
例如,假设您定义了下面一个数组:
myArray = new Array("Wind","Rain","Fire")
myArray.join()
返回 "Wind,Rain,Fire";myArray.reverse
调换数组元素位置使 myArray[0] 为 "Fire",myArray[1] 为 "Rain",
myArray[2]
为 "Wind";myArray.sort
对数组排序使 myArray[0] 为 "Fire",myArray[1] 为 "Rain",myArray[2] 为 "Wind"。
JavaScript 教学 |
|
Boolean 对象是 Boolean 数据类型的包装器。每当 Boolean 数据类型转换为 Boolean 对象时,JavaScript 都隐含地使用 Boolean 对象。用下面的语法来创建一个 Boolean 对象:
booleanObjectName = new Boolean(value)
不要将原始 Boolean 的值 true 和 false 和 Boolean 对象的值 true 和 false 相混淆。可选的 value 参数是新对象的初始 Boolean 值。如果该值省略,或者为 false、undefined、null、NaN 以及空字符串,则该 Boolean 对象的初始值为 false;否则,初始值为 true。如:
var b = new Boolean(false);
if (b) // 该表达式为 true
JavaScript 教学 |
|
JavaScript 没有时间数据类,但您可以用 Date 对象及其方法来取得日期和时间。Date 对象有许多方法来设置、提取和操作时间,它没有任何属性。JavaScript 处理时间的方法类似于 Java。Date 对象的范围为相对于1970年1月1日的前后 100,000,000 天。创建一个 Date 对象:
dateObjectName = new Date([parameters])
dateObjectName 是创建的 Date 对象名,它可以是一个新对象或已存在对象的属性,parameters 可以是以下几种:
- 空白:创建现在的日期和时间,如
today = new Date()
; - 用字符串描述时间:“月 日, 年 小时 分 秒”,如:
Xmas95 = new Date("December 25, 1995 13:30:00")
,如果您省略了时、分或秒,该值将设为零; - 一串年,月,日的整数值,如
Xmas95 = new Date(1995,11,25)
;
一串年,月,日,小时,分,秒的整数值,如:Xmas95 = new Date(1995,11,25,9,30,0)
。
Date 对象的方法
方法 | 描 述 |
---|---|
"set" 方法 | 在 Date 对象中设置日期和时间 |
"get" 方法 | 在 Date 对象中提取日期和时间值 |
"to" 方法 | 从 Date 对象返回字符串值 |
parse and UTC 方法 | 解析一个包含日期的字符串,主要用于给一个已存在的 Date 对象赋日期字符串值 |
下面我们来看一个相关的实例:
JavaScript 教学 |
|
预定义的 Function 对象指定一个 JavaScript 字符串码象函数一样进行编译,其用法如下:
functionObjectName = new Function ([arg1, arg2, ... argn], functionBody)
functionObjectName 是一个变量名或一个已存在的对象属性,它也可以是一个对象后跟一个小写的事件处理器名,如 window.onerror;arg1, arg2, ... argn 是可选的函数接收的参数名。functionBody 是包含调用该函数时被执行的 JavaScript 代码块的字符串。下面的代码将一个函数赋予变量 setBGColor,该函数设置当前文档的背景色:
var setBGColor = new Function("document.bgColor='antiquewhite'")
为了调用 Function 对象,您可以指定该变量名好象它是一个函数,如下:
var colorChoice="antiquewhite"
if (colorChoice=="antiquewhite") {setBGColor()}
给事件处理器赋予一个函数您有以下两种方法:
document.form1.colorButton.onclick=setBGColor
;<INPUT NAME="colorButton" TYPE="button" VALUE="Change background color"
onClick="setBGColor()">
JavaScript 教学 |
|
预定义的 Math 对象具有数学常量和函数的属性和方法,如您可以用 Math.PI 来获取圆周率。同样的,标准的数学函数也是 Math 对象的方法,如您可以使用 Math.sin(1.56) 来求取 1.56 的正弦值,不过请注意所有的三角函数的参数都为弧度,请看下表:
方法 | 描 述 |
---|---|
abs | 绝对值 |
sin, cos, tan | 标准三角函数,参数为弧度 |
acos, asin, atan | 反三角函数,返回弧度 |
exp, log | 指数和自然对数,基数为 e |
ceil | 返回大于等于其数字参数的最小整数 |
floor | 返回小于等于其数字参数的最大整数 |
min, max | 返回两个参数的较大/较小者 |
pow | 指数,第一个参数为基数,第二个为指数 |
round | 返回最接近的整数 |
sqrt | 平方根 |
与别的对象不同,您不能自已创建一个 Math 对象,所有的 Math 对象都是预定义的,您可以这样来使用多个的数学常量和方法:
with (Math) {
a = PI * r*r
y = r*sin(theta)
x = r*cos(theta)
}
JavaScript 教学
Number 对象
Number 对象代表数值数据类型和提供数值常数的对象。Number 对象最主要的用途是将其属性集中到一个对象中,以及使数字能够通过 toString 方法转换为字符串。 下表为 Number 对象的属性:
方法 描 述 MAX_VALUE JavaScript 能表达的最大数 ,约为 1.79E+308 MIN_VALUE JavaScript 能表达的最小数,约为 2.22E-308 NaN 表示算术表达式返回非数字值的特殊值 NEGATIVE_INFINITY 特殊的负无穷大值,返回溢出 POSITIVE_INFINITY 特殊的正无穷大值,返回溢出
JavaScript 教学
String 对象
String 对象可用于处理或格式化文本字符串以及确定和定位字符串中的子字符串。 不要将它同字符串直接量相混淆,如下例中 s1 为字符串直接量,而 s2 为 String 对象:
s1 = "foo"
s2 = new String("foo")您可以在一个字符串直接量中调用任何 String 对象方法—JavaScript 自动将字符串直接量转换为一个临时的 String 对象并调用其方法,然后丢弃该临时 String 对象,您也可以在一个字符串直接量中使用 String.length 属性。您应当首先使用字符串直接量除非您有特殊的需要,因为 String 对象违反了直觉,如:
s1 = "2 + 2" //创建字符串直接量
s2 = new String("2 + 2") //创建 String 对象
eval(s1) //返回数值 4
eval(s2) //返回字符串 "2 + 2"
RegExp 略