复合类型是由许多基本数据类型(也可以包括基本数据类型)组成的数据题,JavaScript中的复合类型大致上分为如下3种:
Object类:对象 Array:数组 Function:函数
对象
对象是一系列命名变量,函数的集合,其中变量的类型可以是基本类型也可以是复合类型,对象中的命名变量称为属性,而对象中的函数称为方法。对象访问属性和函数的方法是通过” . ”来实现的。JavaScript是基于对象的脚本语言,它提供了大量的内置对象供用户使用,比如有一下内置类:
Array :数组类
Date :日期类
Error :错误类
Function :函数类
Math ;数学类,该对象包含相当多的执行数学运算的方法
Number :数值类
Object :对象类
String:字符串类
<script type="text/javascript">
var person=new Object();
person.firstname="John";
person.lastname="Doe";
person.age=50;
person.eyecolor="blue";
document.write(person.firstname + " is " + person.age + " years old.");
</script>
结果:
数组
数组是一系列的变量,数组中的变量的类型可以不相同。定义一个数字有以下三种语法:
Var a = [1,2,3,]
Var b = [ ];
Var c = new Array();第一种在定义数组时已经对数组进行初始化,第二种和第三种都只是创建了一个空数组。
<script type="text/javascript">
var a = [3,5,23];
var b = [];
var c = new Array();
b[0] = 'hello';
b[1] = 6;
c[5] = true;
c[7] = null;
document.write(a + "\n" + b + "\n" + c +"<br/>");
document.write("a数组的长度为:" +a.length +"<br/>");
document.write("b数组的长度为:" +b.length +"<br/>");
document.write("c数组的长度为:" +c.length +"<br/>");
</script>
结果:
JavaScript 作为动态的,弱类型语言,有以下 3 个特征:
JavaScript 的数组长度可变。数组长度总等于所有元素索引最大值 +1
同一个数组中的元素类型可以互不相同
访问数组元素时不会产生数组越界,访问并未赋值的数组元素时, 该元素的值为 undefined 。
JavaScript 中的数组本身就是一个功能十分强大的“容器”,它不仅仅可以代表数组,而且可以作为长度可变的线性表使用,还可以作为栈使用,也可以作为队使用。
JavaScript 中数组作为栈使用的两个方法如下:
push ( ele ):元素入栈,返回入栈后的数组的长度。
pop ():元素出栈,返回出栈的数组元素。
JavaScript 中数组作为队列使用的两个方法:
unshift ():元素入队列,返回入队列后数组的长度。shift():元素出队列,返回出队列的数组元素。
<script type="text/javascript">
var stack = [];
stack.push("百度");
stack.push("阿里巴巴");
console.log(stack.pop());
console.log(stack.pop());
var queue = [];
queue.unshift("淘宝");
queue.unshift("京东");
console.log(queue.shift());
console.log(queue.shift());
</script>
结果:
此外,Array 对象还定义了如下的方法:
concat ( value,.... ):为元素添加一个或多个元素,该方法返回追加元素后得到的数组,但原数组并不改变。
join ():将数组的多个元素拼接在一块,组成字符串返回。
reverse ():反转数组包含的元素。
slice ( start , end ):截取数组在开始索引和结束索引之间的子数组,该方法返回截取得到的数组,但是原数组并不改变。
sort ():将数组元素进行排序。Splice(start,delcount,value):截取一个字符串,从开始索引开始,删除delcount个元素,再将新的value值追加到数字中,该方法返回数组被截取部分组成的新数组。
函数
JavaScript中的函数类型有返回值,但是无返回类型。函数中可以包含一段可执行的代码,也可以接受调用者传入参数。JavaScript的函数声明中,参数列表不需要数据类型声明,函数的返回值也不需要声明数据类型。
function judgeAge( age ){
if(typeof age === "number"){
if(age > 60){
alert('老年人');
}
else if(age > 40){
alert('中年人');
}
else if(age > 15){
alert('青年人');
}
else{
alert('儿童');
}
}
else{
alert('参数必须为数值');
}
}
judgeAge(55);
结果: