引用类型(1)

来源:互联网 发布:武汉软件开发工资 编辑:程序博客网 时间:2024/05/17 01:18

最近在看javascript高级程序设计,于是想写点笔记,把重要的内容写下来,加深记忆,也便于以后查阅。


1、object类型

创建object的实例:

(1)new 运算符 

 var person = new object();

 person.name = “anny”; 

 person.age = 20;

(2)对象字面量

 var person = {

name : ”anny”,

age : 29

 }

可以用 或者[  ]访问对象属性,方括号的优点是可以通过变量来访问属性,或者属性名有空格时,也可用放括号。

 

2、Ayyay类型

2.1.1创建Array的实例:

(1)构造函数方法

 var colors = new Array(“red”,”blue”,”green”);

 var colors = new Array(20);

 var colors = new Array();

(2)数组字面量表示法

 var colors = [“red”,”blue”,”green”];

 var colors = [];//创建一个空数组

 var colors[2] = “black” //修改第三项

length返回数组中元素的个数,length属性是可读写的,通过设置这个属性,可以从数组的末尾移除项或向数组添加项。最后一项的索引始终是length-1

检测数组

使用Array.isArray()方法,支持的浏览器有:ie9+,ff 4+,safari 5+Opera 10.5+chrome

 

2.1.2转换方法(把数组转换为字符串)

toLocaleString(), toString(), valueOf(),join()

前三种方法都是默认以逗号作为分隔符的,最后一种方法可以传入一个参数作为分隔符

 

2.1.3栈方法(LIFO)

push()方法可以接收任意数量的参数,把它们逐个添加到数组末尾,并返回修改后的数组长度。

pop()方法是从数组末尾移除最后一项,减少数组的length值,然后返回移除的项。

 

2.1.4队列方法(FIFO)

队列在列表的末端添加项,在前端删除项。所以结合以下两种方法可以对数组进行队列操作

shift()移除数组中的第一项并返回该项

push()

unshift()能在数组前端添加项,并且返回数组长度,同时使用unshift()pop()方法可以熊相反方向来模仿队列。

ie7及更早的版本,其unshift()方法总是返回undefined().

 

2.1.5重排序方法

reverse()方法和sort()方法,返回值是经过排序的数组

reverse()方法反转数组项的顺序

sort()方法会调用每一项的toString()方法,然后以升序比较字符串。假如要比较的是数字,结果就不是我们想要的了,例如,数值5虽然小于数值10但是字符串5是大于字符串10的。

因此sort()可以接收一个函数作为参数,以下是一个比较简单的比较函数,可以让数值升序把排序

function compare(value1,value2){

if(value1 < value2){

return -1;

}else if(value1 > value2){

return 1;

} else {

return 0;

}

}

实现降序排序只要交换比较函数的返回值就行了。

对于数值类型或者其valueOf方法会返回数值类型的对象类型,可以使用一个更简单的比较函数。

function compare(value1,value2){

return  value2 - value1;

}

 

2.1.6操作方法

concat()方法:先创建一个当前数组的副本,然后将参数添加到这个副本的末尾,最后返回新构建的数组。

slice()方法:接受一或两个参数,要返回的项的起始和结束位置(不包含结束的项,项是指数组的索引),如果只有一个参数,则返回开始到数组末尾

splice()方法:

(1)删除,指定两个参数,第一个表示要删除的第一项的位置,第二个参数表示要删除的项数。splice(0,2)会删除数组的前两项

(2)插入,指定三个参数,起始位置、0(要删除的项数,这里是指插入不删除,所以是0)、要插入的项(如果要插入多个,则可以添加第四第五个参数)

(3)替换,指定3个参数,起始位置、要删除的项数、要插入的任意数量的项。插入的项数不必与删除的项数相等。

2.1.7位置方法

indexOf(),lastIndexOf()这两个方法都接收两个参数,要查找的项和(可选的)表示查找起点位置的索引。其中indexOf()从数组开头开始向后查找,lastIndexOf则相反。这两个方法都返回要查找到项在数组中的索引。没有则返回-1.支持这两方法的浏览器:IE 9+,Firefox 2+,safari 3+,opera 9.5+,chrome

2.1.8迭代方法

ECMAScript 5位数组定义了5个迭代方法,每个方法都接收两个参数:要在每一项上面运行的函数和(可选的)运行该函数的作用域对象----影响this的值,传入这些方法中的函数会接受三个参数:数组项的值,该项在数组中的位置,和数组对象本身。

(1)every():对数组中的每一项运行给定函数,如果该函数对每一项都返回true,则返回true

(2)filter():对数组中的每一项运行给定函数,返回该数组会返回true的项组成的数组

(3)forEach():对数组中的每一项运行给定函数,没有返回值

(4)map():对数组中的每一项运行给定函数,返回对应项上运行传入函数的结果组成的数组

(5)some():对数组中的每一项运行给定函数,任意一项返回true,则返回true

eg:

var numbers = [12,3,4,5,4,3,2,1,];

var filterResult = numbers.filter(function(item,index,ayyay) {

return item>2;

});

alert(filterResult); //[3,4,5,4,3]

支持这些方法的浏览器有:IE 9+,Firefox 2+,Safari 3+,Opera 9.5+ chrome

 

2.1.8归并方法

reduce()reduceRight(),前者会从第一项开始,逐个遍历到最后。后者则从数组最后一项开始遍历。这两个方法都接收两个参数,一个在每一项上调用的函数和(可选的)作为归并基础的初始值

reduce()reduceRight的函数接收4个参数:前一个值,当前值,项的索引和数组对象,这个函数返回的任何值都会作为第一个参数自动传给下一项。

eg求数组中所有项的和

var values = [1,2,3,4,5];

var sum = values.reduce(function(prev,cur,indx,array){

return prev + cur;

});

alert(sum); //15

支持的浏览器有:IE 9+,Firefox 3+,Safari 4+,Opera 10.5+ chrome


0 0
原创粉丝点击