引用类型是一种数据结构,不同于类
Object类型
创建方法有两种:
- 使用new操作符后跟Object构造函数
var person=new Object(); person.name="tom"; person.age=29;
- 对象字面法表示(属性名也可以使用字符串)
var person={ name:"tom", age:29 };
因为age是最后一个属性,所以在后面不能加逗号。
- 在js中也可以使用方括号来访问对象的属性。方括号可以通过变量来访问属性。
alert(person["name"]);
Array类型
ECMAScript数组的每一项可以保存任何类型的数据,数组的大小是可以动态调整的,即可以苏浙数据的添加自动增长容纳新的数据。
创建方法有两种:
1 使用Array构造函数
var colors=new Array();
var colors=new Array(20);
var colors=new Array("red","blue");
2 使用数组字面量表示法
var color=["red","blue"];
var color=[]; //创建一个空数组
在读取和设置数组的值时,要使用方括号并提供响应值的基于0的数字索引
var color=["red","blue"]; alert(color.length); alert(color[0]); color[2]="black";//增加一项 color[0]="green";//修改
检测数组
出现了某个对象是不是数组的经典问题
if(value instanceof Array){ }
最终确定某个值到底是不是数组
if(Array.isArray(value)){ }
转换方法
所有对象都有toLocaleString(),toString(),valueOf()方法
调用toString()会返回由数组中每个值的字符串形式拼接成的一个以逗号分隔得字符串
调用valueOf()返回的还是数组
join方法使用不同的分隔符构建这个字符串
alert(colors.join("||"));
//red||blue||green
栈方法
栈的插入和弹出只在顶端发生,类似栈得行为pop()和push()
push()可以接收任意数量的参数,把他们逐个添加到数组末尾,并返回修改后数组的长度;
pop()从数组末尾移除最后一项,减少数组的length,然后返回移除的项
var colors=new Array(); var count=colors.push("red"); alert(count);//1 count=colors.push("green"); alert(count);//2 var item=colors.pop(); alert(item)//"green"
队列方法
队列在列表的末尾添加项push(),从列表的前端移除第一项shift(),返回项,在前端添加项unshift()返回新数组的长度
类似于栈方法。
重排序方法
reverse()降序排列
比较的是数值
sort()升序排列
会调用toString()转型方法,然后比较得到的字符串,即使是数值,比较的也是字符串。
给一组数值按照升序排序的方法
function compare(value1,value2){ if(value1<value2) return -1; else if(value1>value2) return 1; else retuen 0; }
function compare(value1,value2){ return value2-value1; }
var values=[0,1,4,3,2]; values.sort(compare); alert(values);//0,1,2,3,4
操作方法
concat()可以基于当前数组的所有项创建一个新的数组。
slice()
只有一个参数,会返回从该位置开始到末位置的所有项 。
有两个参数的话,返回从开始位置到结束位置,但不包括结束位置。
如果有一个参数是负数,加上数组长度来确定位置。
splice( )
删除:只需两个参数,删除的第一项位置和要删除的项数。
插入:提供三个参数,起始位置,0(要删除的项数),要插入的项。
替换:三个参数,起始位置,要删除的项数,要插入的任意数量的项。
位置方法
indexOf()从数组的开头位置0开始向后查找
lastIndexOf( )从数组的末尾开始向前查找
两个函数都返回查找的项在数组中的位置。
迭代方法
every()等等
归并方法
reduce()
reduceRight()
Date类型
创建一个日期对象
var now=new Date();
Date.parse();
Date.UTC();
var sometime=new Date(Date.parse("May 25,2017"));
var sometime=new Date("May 25,2004/5/25/2004");
var sometime=new Date(Date.UTC(2005,4 5 17,55,55));
RegExp类型
来支持正则表达式
g:表示全局模式,即模式被应用于所有字符串,而非在发现第一个匹配项时立即停止
i:表示不区分大小写,确定匹配时忽视大小写
m:表示多行模式
/*匹配字符串中所有at的实例*/ var patten1=/at/g; /*匹配第一个“bat”或者“cat”,不区分大小写*、 var patten2=/[bc]at/i;
正则表达式的元字符
([ { \ ^ $ | ) ? * + . }
Function类型
没有重载
函数内部属性
在函数内部有两个特殊的对象:arguments和this