js有三种复合数据类型
复合类型是由多个基本数据类型(也可以包括复合类型)组成的数据体。js的复合类型大致有以下三种:
- Object:对象。
- Array:数组。
- Function:函数。
对象复合数据类型
对象是一系列命名变量、函数的集合。其命名变量的类型既可以是基本数据类型,也可以是复合类型。对象中的命名变量称为属性,而对象中的函数称为方法。对象访问属性和函数的方法是通过“.”实现的。
看如下代码:
<script>
var obj = {
name: 'hahaha', //对象的name属性
age: 34, //对象的age属性
bank: ['huhu', 'dsds', 'gfyfg'], //对象的bank属性是个数组
walk: function() { //walk属性里面包含了一个函数
}
}
for (var index in obj) {//用for in循环输出obj复合类型
console.log(index + "->" + obj[index])
}
</script>
结果如图:
js是基于对象的脚本语言,他提供了大量的内置对象供用户使用。除Object之外,js还提供了如下常用的内置类:
- Array:数组类
- Date:日期类。
- Error:错误类。
- Function:函数类。
- Math:数学类,该对象包含相当多的执行数学运算的方法。
- Number:数值类。
- Object:对象类。
- String:字符串类。
通过new这些类就能得到一个对象。
数组复合数据类型:
定义数组:
var arr=new Array("7","huhuh","中国",ture,5);
var brr=["7","huhuh","中国",ture,5];
js的数组可变。同一个数组元素类型可以不同。访问数组范围外元素不会产生越界,访问未赋值元素会返回undefined。
js还提供了许多数组相关的方法:
- push(ele):元素入栈,添加元素
- pop():元素出栈 ,删除元素并输出
- unshift(ele):元素入队列,添加元素
- shift():元素出队,删除元素并输出
出入栈是先进后出,出入队列是先进先出。
- concat(value,...):为数组添加一个或多个元素。该方法返追加元素后得到的数组,但原数组不改变。
- join([separator]):将数组的多个元素拼接在一起,组成字符串后返回。
- reverse():反转数组包含的元素。
- slice(start,[end]):截取数组在start索引和end索引之间的子数组。如果省略end参数,则数组一直截取到数组结束:如果start、end参数为正数,则从左边开始计数:如果start、end为负数,则从右边开始计数。该方法返回截取到的子数组但原数组不发生改变。
- splice([start,deleteCout,value,...]):截取数组从start索引开始、deleteCount个元素,再将多个value值追加到数组中。该方法返回被截取部分组成的新数组。
- sort([sortfunction]):对数组进行排序。
//字符数组默认逐位排序
var arr = ["asdf", "gfgdf","add","csdf","bbdd"]
console.log("处理前", arr)
arr.sort()
console.log("排序后", arr)
//数字数组默认逐位排序
var arr = [111, 21, 444, 14, 56, 67]
console.log("处理前", arr)
arr.sort()
console.log("排序后", arr)
//数字数组按照大小排序
var arr = [111, 21, 444, 14, 56, 67]
console.log("处理前", arr)
arr.sort(function(a, b) {
return b - a //简单来说就是a-b是升序,b-a是降序
})
console.log("排序后", arr)
结果如图:
也就是说默认是逐位排序,加一个函数可以改变排序方式
arr.sort(function(a, b) { return b - a //简单来说就是a-b是升序,b-a是降序 })
函数复合数据类型:
函数可以包含一段可执行性代码,也可以接受调用者传入参数。js中不需要数据类型声明,函数的返回值也不需要数据类型声明。函数定义的语法格式有三种:
//匿名函数
var name=function(参数,参数,....){函数体}
//命名函数
function name(参数,参数,....){函数体}