引用类型是一种数据结构,可以理解为类。
对象是类的实例。
Var person=new Object();//person就是一个对象
Es提供了很多原生类比如Object。
Object类
创建方法
1.
var person=new Object()
2.
var person={‘a’:1}//属性名全部都是字符串,就算没有加引号,也会被自动转换为字符串
访问属性
1.
person[‘a’] //属性名必须是字符串 优点是可以通过变量来访问属性,且属性名可以是任意字符
var s=’a’;alert(person[s])
2.
person.a
Array类
创建方法
1.
Var color=new Array();
Var color = new Array(20);//length为20
Var color=new Array(“red”,”blue”)
给数组传值的时候,如果只传一个值,且这个值是数字,则会创建这个length的数组,如果是其他,则会创建一个保存这一项的数组。
New都可以省略。
2.
var color=[]
索引
- 如果设置数组内某个值的索引超过了现有的length,数组的长度会自动增加。
- 数组的length不是只读的。可以改变。如果减小它,后面几项会被删除,如果增加它,新增的项是undefined。
- 可以使用length属性很方便地在数组最后加值。
Colors[colors.length]=”new”
检测数组
Array.isArray(value)
转换方法
所有对象都有toLocalString(),toString(),valueOf()方法
toLocalString,toString返回以逗号分隔的字符串
valueOf返回数组本身
[].join(“ “) 返回以空格分隔的字符串
如果数组中的某一项是undefined,则在toString方法里以空字符串表示。
栈方法
Push,返回修改后的数组长度
Pop,返回移除的项
队列方法
Shift 移除第一项并返回值
Unshift 在数组前端添加项并返回新数组长度
重排序方法
Reverse() 返回逆序数组
Sort() 默认按升序,默认调用每一项的toString方法,以字符串顺序排序
Sort可以接受一个比较函数作为参数。这样就会覆盖默认的toString方法的比较方式。
Function compare(value1,value2){
If(value1<value2)return -1
Else if(value>value2)return 1
Else return 0}
其他方法
Concat()可以基于当前数组中的所有项创建一个新数组。把传入的参数添加到末尾。如果传入的参数是数组,数组中的每一项会被添加到末尾。
Slice() 基于当前数组中的一个或多个项创建一个新数组。如果只有一个参数,是起始位置。返回的是从起始位置到结束位置(不包括结束位置)之间的项。、
slice和concat都不会影响原来的数组。
Splice() 向数组的中部插入或删除项。
删除:传入两个参数,第一个参数是起始,第二个参数是末尾
删除后插入:第一个参数是删除位置,第二个参数是删除个数,之后的参数是待插入的项(任意数量) 可以与...符号配合使用,效果更佳
indexOf()和lastIndexOf()
两个参数,第一个是待查找的项,必填,第二个是查找起始位置,选填,一个正着找一个反着找。使用全等操作符比较。(==会自动转换数据类型,===不会)但是在比较对象的时候,比较的是地址值,所以不可以使用indexOf查找对象数组里是否有某个对象,必须要遍历来比较。
==涉及到的自动类型转换
- 1.==符号在判断左右两边数据是否相等时,如果数据类型一致,直接比较值即可
- 2.==符号左右数据类型不一致时,如果两方数据为布尔型、数值型、字符串型时,不为数字的那一方自动调用Number()方法
- 3.undefined和null这两者互相相等,及自身也相等,除此之外和谁都不想等
- 4.NaN比较特殊,他和自己都不相等
- 5.当数值型、字符串型、布尔型和对象进行比较时,对象调用toString()方法得到一个字符串
迭代方法
Filter,map, forEach,every,some
对数组里的每一项运行给定函数, 函数会得到三个值,该项的值,该项的index,该数组本身。
Filter() 返回由返回true的项组成的数组
Var numbers=[1,2,3]
Var result=numbers.filter(function(item,index,array){return(item>2)})
Alert(result) // 3
Map() 返回函数返回的所有结果组成的数组
forEach() 数组每一项都执行函数,没有返回值
every() 如果全部返回true,返回true
some() 如果任一项返回true,返回true
归并方法
Reduce()和reduceRight()
一个从前往后,一个从后往前
Reduce接受两个参数,一是一个函数,二是初始迭代值(可选)
Reduce里的函数接收四个参数,上一次迭代返回的值,当前项,当前索引,当前数组。如果没有指定初始迭代值,那么第一次迭代的时候,第一个参数就是第一项,第二个参数是第二项。
如下所示,第一次迭代的时候p是5,c是1。第二次迭代的时候,p是6,c是2。所以最后的结果是1+2+3+4+5+5=20