javascript高级程序设计第三版笔记一

第五章引用类型数组

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对象

相关文章
相关标签/搜索