复合类型是由多个基本数据类型(也可以包括复合组成的数据体 JavaScript 中的复合类型大致上有如下3种:
- Object:对象
- Array: 数组
- Function: 函数
对象
对象是一系列命名变量、函数的集合。其中命名变量的类型既可以是基本数据类型,也可以是复合类型对象中的命名变量称为属性,而对象中的函数称为方法。 对象访问属性和函数的方法都是通过“.”实现的,例如如下代码用千判断浏览器的版本:
//获得浏览器版本
alert("浏览器的版本为:" + navigator.appVersion);
除Object 之外,JavaScript 还提供了如下常用的内置类
·Array: 数组类
·Date:日期类。
·Error: 错误类。
·Function:函数类
·Math: 数学类,该对象包含相当多的执行数学运算的方法
·Number: 数值类
·Object: 象类
·String: 字符串类
数组
数组是一系列的变量。与其他强类型语言不同的是, JavaScript 中数组元素的类型可以不相同,定义一个数组有如下3种语法:
var a = [3,5,23];
var b = [];
var c = new Array();
第一种在定义数组时已为数组完成了数组元素的初始化 ,第二种和第三种都只创建一个空数组。
JavaScript 作为动态、弱类型语言,归纳起来,其数组有如下3个特征。
·JavaScript 的数组长度可变。数组长度总等千所有元素索引最大值+
·同一个数组中的元素类型可以互不相同。
·访问数组元素时不会产 生数组越界,访问并未赋值的数组元素时,该元素的值为undefined。
JavaScript 数组本身就是一种功能非常强大的“容器”,它不仅可以代表数组,而且可以作为长度可变的线性表使用,还可以作为栈使用,也可以作为队列使用。
push(ele): 元素入栈,返回入栈后数组的长度 //在最后添加
pop() :元素出栈,返回出栈的数组元素 //在最后删除
unshift(ele) :元素入队列,返回入队列后数组的长度 //在最开始添加
shift():元素出队列,返回出队列的数组元素 //在最开始删除
此外, Array 对象还定义了如下方法。
concat(value… ):为数组添加一个或多个元素 。该方法返回追加元素后得到的数组,但原数组并不改变
join([separator]): 将数组的多个元素拼接在一起,组成字符串后返回。
reverse(): 反转数组包含的元素
slice(start , [end] ): 截取数组在 start 索引和 end 索引之间的子数组。如果省略 end 参数,则数组一直截取到数组结束;如果 start end 参数为正数,则从左边开始计数;如果 start、end 参数为负数,则从右边开始计数 。该方法返回截取得到的子数组 ,但原数组并不改变。
sort([ sortfunction]): 对数组元素排序。
splice(start , deleteCount, value,…): 截取数组从 start 索引开始、deleteCount 个元素,再将多个 value 值追加到数组中 。该方法返回数组被截取部分组成的新数组。
下面代码简单示范了上面方法的应用:
<script type="text/javascript">
var a = ["html",2,"yeeku"];
console.log(a.concat(4,5));//输出["html ", 2 , " yeeku ", 4 , 5]
console.log(a.concat([4,5]));//输出["html ", 2 , " yeeku ", 4 , 5]
console.log(a.concat([4,5],[6,7]));//输出["html ", 2 , " yeeku ", 4 , 5,6,7]
var b = ["html",20,"is",99,"good"];
console.log(b.join());//输出 html,20,is,99,good
console.log(b.join("+"));//输出 html+20+is+99+good
var c = ["html","css","jquery","bootstrp"];
c.reverse();
console.log(c);//输出["bootstrap ", " jquery", "css", "html"]
var d = ["yeequ","leegang","crazyit","fkit","charlie"];
console.log(d.slice(3));//输出 ["fkit","charlie"]
console.log(d.slice(2,4));//输出 ["crazyit","fkit"]
console.log(d.slice(1,-2));//输出 ["leegang","crazyit"]
console.log(d.slice(-3,-2));//输出 ["crazyit"]
var e = ["yeequ","leegang","crazyit","fkit","charlie"];
//输出["fkit","charlie"], e变成["yeeku", " leegang", "crazyit"] console.log(e.splice(3));
//输出["leegang"], e变成["yeeku","crazyit"]
console.log(e.splice(1,1));
//输出["yeeku"], e变成[20,30,40,"crazyit"]
console.log(e.splice(0,1,20,30,40));
console.log(e.splice(e));
</script>
函数
函数是 JavaScrip 中另一个复合类型 函数可以包含一段可执行性代码,也可以接收调用者传入参数。正如所有的弱类型语言一样,JavaScript 的函数声明中,参数列表不需要数据类型声明,函数的返回值也不需要数据类型声明。函数定义的语法格式如下:
function functionName(paraml , param2 ,...)
{
}
例如一个简单的函数:
<script type="text/javascript">
//定义一个函数,定义函数时无须声明返回值类型,也无须声明变盘类型
function judgeAge(age)
{
//如果参数值大于 60
if (age > 60)
{
alert(“ 老人”) ;
}
//如果参数值大于 40
else if(age > 40)
{
alert(“中年人”);
}
//如果参数值大于 15
else if (age > 15)
{
alert( “青年人”) ;
}
//否则
else
{
alert(“儿童”);
}
}
//调用函数
judgeAge(46);
</script>
通过 judgeAge(46)调用函数。代码的执行结果是中年人
调用函数的语法如下
funcionName(valuel,value2...);
从语法定义的角度来看, JavaScript 函数与 Java 方法有些相似 但实际上它们的差别很大,归纳起来 主要存在如下4点区别:
·JavaScript 函数无须声明返回值类型
·JavaScript 函数无须声明形参类型
·JavaScript 函数可以独立存在,无须属千任何类
·JavaScript 函数必须使用 function 关键字定义