first:引用类型是一种数据结构
描述的是一类对象所有的属性和方法
一般访问对象属性都是使用点表示法,但是也可以使用方括号表示法
但是注意的是:使用方括号注意应该将访问的属性一字符串的形式放在括号中
所以如果属性名中包含:导致语法错误的字符和关键字,空格,等都可以使用括号表示法
如果属性名中含有空格,我们将不能使用点表示法,必须使用括号表示法,其他情况下,建议使用点表示法
- Object类型
- Array类型 创建数组类型
javascript 数组和其他语言有点不太一样,他可以存储任何类型的数据,类似于结构体,但是还是有序的,而且数组的长度是动态的,会随着数据的添加自动增长。
创建数组的基本方式有两种:
- 使用构造函数Array()
例如:
而且在使用Array构造函数时可以不使用(省略)new操作符
访问:如果方括号中的索引小于数组项数,则会得到相应的值,但是如果超出数组就会自动增加到这一项+1;类型就为undefined
数组的长度可以根据属性:length来获取
检测数组:检查看是不是数组
使用instanceof操作符 (鉴于只有一个全局环境) 确定某个(对象)是不是数组
所以有Array.isArray()的方法 确定某个(值)是不是数组
使用if语句判断
类型转换:toString()转换为字符串,数组的话,转换为以逗号分隔的字符串
调用value()返回的还是数组
注意:如果使用alert().必须知道他本身要接受字符串参数,所以会在后台调用toString(),所以会和显示调用toString(),的效果一样
数组继承的toLocalString(),toString(),value()
默认都是以逗号分隔,但是使用join()可以使用不同的得分隔符,只接受一个参数,就是分隔符
使用方法:Object.join(分隔符);
如果数组的某一项是NUll或undefined,那么在这几种方法中,返回的结果都是空字符串
栈方法:
1. 栈:限制插入和删除的数据结构(栈是一种后进先出的数据结构)最先添加,最早删除
2. 栈的插入(推入)和移除(弹出),只发生在一个位置---栈的顶部
3. 方法:push() 推入
接受任意数量的参数,逐个添加至数组末尾,返回数组长度
5. pop()弹出
移除数组末尾的最后一项,返回移除的项;
var n=Array(['1','2','3','4']);
var N=n.push('6'); 返回:5
var N=n.pop('1') ; 返回:1(被移除的项)
队列方法
队列数据结构是先进先出,从末尾添加((push()),前端删除(shift());
移除:shift()移除第一项 返回移除项
unshift()可以再前端添加数组;push()后端添加,pop()后端删除
重排序方法:
reverse(),反转,逆置; sort()升序;但是他本身调用的是toStrng()得到的是字符串,所以,也是按照字符的方式比较,所以需要给定相应的比较方法; 通过参数,可以接受一个函数,函数体是比较规则;,就是自己写一个函数,函数体是比较规则,然后将这个函数作为sort() 的参数,从而得到自己想要的结果
操作方法:
1:concat(),可以基于一个数组,创建一个新的数组; 先是复制已经存在的数组,然后参数是新的数组所要添加的元素,参数可以是单个元素,也可以是一个数组; 都会添加到末尾;但是这个方法不会影响原始数组 2:slice(),参数一个:返回参数到数组结尾的元素所构成的数组; 参数:;两个,返回第一个参数至第二个参数之间的元素,注意但是不包括结束项,【 ),左闭右开; ,但是这个方法不会影响原始数组, 如果slice()参数有一个负数,则用数组长度加上该数,确定相应位置,如果结束位置小于开始位置,则返回空数组; 3:splice(),主要是向数组中部插入项, 删除,参数2个【起始位置,结束位置),例如:splice(0,2) 删除0,1;数组前两项 插入,参数3个,(插入的位置,0,插入元素) 替换,参数3个,(起始位置,删除项的个数,替补的元素),注意替补的元素的个数不限;
位置方法:
indexOf(),参数2个,查找的项和查找的起点位置,从数组前面开始 lastindexOf(),参数2个,从数组后面开始 找到 返回所找元素的位置,否则返回-1;,查找使用全等(===),所以类型也很严格;
迭代方法:5个,参数2个
every()对一项都给定函数 ‘每’ 一项返回true,则为true; && filter(),对一项都给定函数返回项数是true的组成的数组; forEach()对一项都给定函数,但是没返回值 map()返回每次调用结果组成的数组; some()对一项都给定函数 ‘任意’ 一项返回true,则为true; || some()和every()区别: every(),传入的函数必须对每一项都返回true; some(),只要传入的函数对数组中的某一项返回true,就会返回true
归并方法:reduce() 正向,reduceRight() 逆向;