第五章引用类型数组
5.1 Object类型浏览器
建立Object实例的方式有两种。
第一种是使用new操做符函数
var person=new Object(); person="eve"; person.age=29;
第二种是对象字面量 **推荐的写法firefox
var person={ name:"eve", age:20 }
对象字面量的属性名也能够是字符串code
var person={ "name":"eve", "age":20 5:true //数值属性会自动转换成字符串 } var person={}; person.name="eve"; person.age=20;//这种写法和上面的写法等价
通常来讲,访问对象属性使用的是点表示法。但也可使用方括号来访问对象的属性。orm
alert(person["name"]); alert(person.name);
5.2 Array类型对象
建立数组的基本方式有两种。
第一种使用Array构造函数
var colors=new Array();
能够传递数量也能够传递具体数值
var colors=new Array(20);
var colors=new Array{red,blue,green};
也能够省略new 关键字
var colors=Array(20);
var colors= Array{red,blue,green};排序
第二种是使用数组字面量表示法.
var colors=[red,blue,green];//建立一个包含3个字符串的数组
var names=[];//建立一个空数组
读取项数用length
alert(colors.length);//3
length不是只读的,能够设置这个属性,从数组的末尾移除项和向数组中添加新项。
var colors=[red,blue,green];
colors[colors.length]="black";//在3上的位置添加
colors[colors.length]="brown";//在4上的位置添加
访问索引是length-1;继承
检测数组
除了用instanceof索引
if( value instanceof Array){
//对数组执行某些操做
}
通常用isArray
if(Array.isArray(value)){
//对数组执行某些操做
}区别在于全局做用域
5.2.2 转换方法
全部的对象都具备toLocaleString()、toString()、valueOf()方法
var colors=["red","blue","green"]; alert(colors.toString());//red,bule,green 返回由数组中值拼接的一个以逗号分隔的字符串 alert(colors.valueOf());//red,bule,green 返回的仍是数组 //默认分隔符是逗号,可用join方法改变分隔符 var colors=["red","blue","green"]; alert(colors.join(","));//red,blue,green alert(colors.join("||")); //red||blue||green alert(colors.join()); //red,blue,green alert(colors.join(undefined)); //red,blue,green
不传值或者传入undefined,依旧返回逗号
5.2.3 栈方法
LIFO 后进先出
push()从数组末尾插入并返回修改后数组的长度
pop()从删除数组末尾移除最后一项,减小数组的length长度,并返回移除的项
var colors=new Array(); //建立一个数组 var count=colors.push("red","green"); //推入两项 alert(count); //2 count=colors.push("black"); alert(count); //3 var item=colors.pop(); //取得最后一项 alert(item); //black alert(colors.length); //2
5.2.4 队列方法
FIFO 先进先出
shift() 移除数组第一项并返回该项,同时长度减去1
unshift() 在数组第一项添加并返回新数组的长度
var colors=new Array(); //建立一个数组 var count=colors.push("red","green"); //推入两项 alert(count); //2 count=colors.push("black"); alert(count); //3 var item=colors.shift();//取得第一项 alert(item); //red alert(colors.length); //2 var colors=new Array(); //建立一个数组 var count=colors.unshift("red","green"); //推入两项 alert(count); //2 count=colors.unshift("black"); //推入另外一项 alert(count); //3 var item=colors.pop();//取得一最后项 alert(item); //green alert(colors.length); //2 ie7集更早的版本其unshift方法老是返回undefined而不是数组的长度 ie8 在非兼容模式下回返回正确的长度值
5.2.5 重排序方法
reverse() 反转数组的顺序
sort() 按升序排列数组 比较的是字符串
function compare (value1,vlaue2) { return vlaue2-value1; } var value=[0,10,1,2,5,15]; value.sort(compare); alert(value); //从大到小的排列 15,10,5,2,1,0
5.2.6 操做方法
concat()链接,把值添加到数组的末尾
slice() 基于当前数组中的一个或多个项建立一个数组。两个参数,返回参数项的起始和结束位置。之间的项,但不包括结束位置。一个参数,返回从该参数指定位置到当前项末尾的全部项。不会影响原始数组
splice() 能够删除、插入、替换,算是最强大的数组方法了。有不少用途,主要用途是向数组中部插入项
var colors=["red","green","blue","yelllow","browns"]; var removed=colors.splice(0,3);//删除操做 要两个参数,要删除的第一项的位置和要删除的项数 alert(colors); //yelllow,browns alert(removed); //red,green,blue 返回被删除的项 removed=colors.splice(1,0,"orange"); //插入操做 ,从位置1,插入一项 alert(colors); //yelllow,orange,browns alert(removed);//返回的是一个空数组 removed=colors.splice(2,1,"red","purple"); //替换操做 删除当前位置2的项,而后从位置2开始插图red,purple alert(colors);//yelllow,orange,red,purple alert(browns); //orange 返回的数组只包括一项
5.2.7 位置方法
indexof() 从数组的开头位置0开始向后查找
lastIndexOf() 从数组的开头向前查找
两个方法都返回要查找项在数组中的位置,没有找到返回-1.都接受两个参数,要查找的项和表示查找起点位置的索引(可选)。
查找特定项在数组中的位置
5.2.8 迭代方法
every()查询数组中的项是否知足条件。传入的函数每一项都返回ture,才返回true
filter()
forEach()
map()
some()查询数组中的项是否知足条件。只要传入的函数有一项返回ture,就返回true
都不会修改数组中包含的值
5.2.9 归并并法
reduce()
reduceRight()
5.3 Date类型
建立日期对象
var now=new Date();
在不传递参数的状况下返回的是当前日期和时间。
若是想获得特定的日期和时间建立日期对象,则须要传入参数
ECMAscripte提供了两个方法:Date.parse()和Date.UTC();
Date.parse()接收一个表示日期的字符串参数,返回相应日期的毫秒数。
var someDate=new Date(Date.parse("May 25,2004")); 可简化为 var someDate=new Date("May 25,2004");
Date.UTC()一样返回日期的毫秒数。参数分别表示年份,基于0的月份,天,小时,秒,毫秒。只有前两个是必须的。
如:
var y2k=new Date(2000,0);//本地时间2000年1月1日 var allFives=new Date(2005,4,5,17,55,55);//本地时间2005年4月5日下午5:55:55
ECMAscript5添加了Date.now()方法。返回调用这个方法时的日期和时间的毫秒数。
var start=Date.now();//取得开始时间 doSomething//调用函数 var stop=Date.now();//取得中止时间 var result=stop-start;
直接方法的浏览器包括iE9,firefox3+,safari3+.opera10.5,chorme;
在不支持的浏览器中科院使用+操做符获取Date对象的时间戳 。
var start=new Date();//取得开始时间 doSomething//调用函数 var stop=+new Date();//取得中止时间 var result=stop-start;
5.3.1继承的方法
便于比较日期时间值
var date1=new Date(2007,0,1); var date2=new Date(2007,0,1); alert(date1<date1);//true alert(date1>date1);//false
5.3.2日期格式化的方法
5.3.3日期/时间组件方法
5.4 RegExp类型
5.4.1 RegExp实例属性5.4.2 RegExp实例方法5.4.3 RegExp构造函数属性5.4.4 模式的局限性5.5 Function类型5.5.2 函数声明与函数表达式5.5.3 做为值得函数5.5.4 函数内部属性5.5.5 函数属性和方法5.6 基本包装类型5.6.1 Boolean类型5.6.2 Number类型5.6.3 String5.7 单体内置对象5.7.1 Global对象5.7.2 Math对象