第五章引用类型
5.1object类型
创建方式:
用new操作符后跟object构造函数;
var person=new object();
person.name=”nicholas”;
person.age=29;
使用对象字面量表示法,最后一个属性不加逗号,其余语句末尾加逗号。(推荐)
var person={
name=”nicholas”,
age=29
};
访问对象属性使用点表示法(推荐)和方括号法。
alert(person.name);
alert(person[“name”]);
方括号法可以通过变量来访问属性,
var personName=”nicholas”;
alert(person[“personName”]);
如果属性名中包含导致语法错误的字符,或使用的是关键字和保留字,也可以使用方括号法。
5.2Array
数组的每一项可以保存任何类型的数据。
1.创建方法:
使用Array构造函数。
var colors=new Array();
使用数组字面量表示法。
var colors=[“red”,”blue”,”black”];
2.数组的length属性可以从数组的末尾移除项或向数组中添加新项
5.2.1检测数组
Instanceof操作符
Array.is Array()方法
5.2.2转换方法
toString()返回数组中每个值的字符串形式拼接而成的一个以逗号分割的字符串
valueOf()返回数组
join()方法只接受一个参数,将不同的分隔符来构造字符串
5.2.3栈方法
栈是一种LIFO的数据结构
push()接受任意数量的参数,逐个添加到数组末尾,并返回修改后的数组长度
pop()移除数组末尾最后一项,减少数组的length值,返回移除的项
5.2.4队列方法
队列数组的访问规则是FIFO()
shift()移除数组第一个项,并将数组长度减一
push()
unshift()在数组前端添加任意个项并返回新数组的长度
pop()
5.2.5重排序方法
reverse()反转数组项的顺序,返回经过排序后的数组
sort()按升序排列数组项,比较的是字符串, 返回经过排序后的数组
从小到大的比较函数
function compare(value1,value2){
if(value1<value2){return -1;}
else if(value1>value2){ return 1;}
else{return 0;}
}
从大到小的比较函数
function compare(value1,value2){
if(value1<value2){return 1;}
else if(value1>value2){ return -1;}
else{return 0;}
}
5.2.6操作方法
concat()可以基于当前数组中的所有项创建一个新的数组,先创建当前数组的一个副本,将接受到的数组添加到副本的末尾,返回新构建的数组
slice()基于当前数组的一或多个项创建一个新的数组,只有一个参数,返回参数指定位置开始到数组末尾的所有项;有两个参数,返回起始和结束之间的项,但不包括结束位置的项
splice()方法有三种方式
- 删除
指定两个参数,要删除的第一项位置和要删除的项数
- 插入
提供三个参数,起始位置、0、要插入的多个项
- 替换
指定三个参数,起始位置、要删除的项数、要插入的多个项
5.2.7位置方法
都接收两个参数:要查找的项和表示查找起点位置的索引,返回要查找的项在数组中位置,没找到返回-1,要查找的项必须严格相等(===)
indexOf()从数组的开头向后查找
lastIndexOf()从数组末尾向后查找
5.2.8迭代方法
都接收两个参数:要在每一项上运行的函数、运行该函数的作用域对象;传入方法中的函数接受三个参数:数组项的值、该项在数组中的位置、数组对象本身,都是对数组每一项运行给定函数
every()每一项返回true,则返回true
filter()返回该函数会返回true的项数组成的数组
forEach()无返回值
map()返回调用的结果组成的数组
some()该函数对任意一项返回true,则返回true
5.2.9归并方法
都迭代数组的所有项,构建一个最终返回的值;都接受两个参数:在每项上调用的函数、做违规并寄出的初始值;传入的函数接受四个参数:前一个值、当前值、项的索引、数组对象
reduce()从第一项开始,遍历到最后
reduceRight()从最后一项开始,遍历到第一项