javascript 引用类型
1 Object 类型
var person = new Object() ; person.name = "summer"; 和 var person = {name:'summer'};是等价的。
2 Array 类型
(1)var colors = new Array(); 和 var colors = Array();和var colors = []; 是等价的。
(2)数组中的length 属性不仅是只读的,即通过设置这个属性,可以从数组的末尾移除项或添加新项。
实例1:
var colors = ['red' , 'blue' , 'green'];
colors.length = 2;
alert(colors[2]); //undefined
实例2:
var colors = ['red' , 'blue' , 'green'];
colors.length = 4;
alert(colors[3]); //undefined,但是数组已经增加
colors[colors.length] = 'black';//数组上再加一个
实例3:
var colors = ['red' , 'blue' , 'green'];
colors[99] = 'black';
alert(colors.length); //100
(3)检测数组:value instanceof Array 和 Array.isArray(value)
(4)装换方法:toLocalString()、toString()、valueOf()以及join
实例1:
var colors = ['red' , 'blue' , 'green'];
alert(colors.join("||")); //red||green||blue
(5)栈方法(LIFO)后进先出:colors.push("red","green"......)(加在后面)和colors.pop()(从后面开始删除)
(6)队列方法(FIFO)先进先出:colors.unshift("red","green"......)(加在前面)和colors.unshift()(从前面开始删除)
(7)重排方法:reverse()和sort()
实例1:
var values = [1,2,3,4,5]'
values.reverse();
alert(values);//5,4,3,2,1
实例2:
var values = [0,1,5,10,15]'
values.sort();
alert(values);//0,1,10,15,5 由于sort没有传递参数,是按照字符串来排列
实例2:
function compare(value1,value2){
if(value1 < value2){
return -1;
}else if(value1 > value2){
return 1;
}else{
return 0;
}
}
var values = [0,1,5,10,15];
values.sort(compare);//传入函数参数
alert(values);//0,1,5,10,15
(8)操作方法:concat()、slice()、splice()
concat():基于当前数组中的所有项创建一个新数组
实例1:
var colors = ['red','green','blue'];
var colors2 = colors.concat('yellow',['black','brown']);
alert(colors);//red,green,blue
alert(colors2);//red,green,blue,yellow,black,brown
slice():基于当前数组中一个或多个项创建一个新数组
实例2:
var colors = ['red','green','blue','yellow','purple'];
var colors2 = colors.slice(1);//一个参数,从1开始到结束
var colors3 = colors.slice(1,4);//两个参数,从1到4,不包括结束项
alert(colors2);//green,blue,yellow,purple
alert(colors3);//green,blue,yellow
splice():删除、插入、替换(splice() 方法始终都会返回一个数组,该数组包含从原始数组中删除的项,如果没有删除项,返回空数组)
删除:可以删除任意数量的项,只需指定2个参数:要删除的第一项的位置和要删除的项数,如splice(0,2)会删除数组中的前两项
插入:可以向指定位置插入任意数量的项,只需要提供3个参数:起始位置、0(要删除的项数)和要插入的项。如splice(2,0,"red","green","yellow".....)会从当前数组的位置2开始插入后面的字符串
替换:可以向指定位置 插入任意数量,而且同时删除任意数量的项,只需指定3个参数:起始位置、要删除的项数和要插入的任意数据的项。插入的项数不必与删除的项数相等。如splice(2,1,"red","green"....)
实例3:
var colors = ['red','green','blue'];
var removed= colors.splice(0,1);
alert(colors );//green,blue
alert(removed );//red
removed= colors.splice(1,0,"yellow","orange");
alert(colors );//green,blue,yellow,orange
alert(removed );//空
removed= colors.splice(1,1,"red","purple");
alert(colors );//green,red,purple,orange,blue
alert(removed );//空
(9)位置方法:indexOf() 和 lastIndexOf(),这两个方法都接收两个参数,要查找的项和(可选的)表示查找起点位置的索引。indexOf()从数组的开头开始向后查找,lastIndexOf() 则从数组的末尾开始向前查找。返回查找项在数组中的位置,没有则返回-1,用的是全等操作符,即严格相等。
(10)迭代方法:every()、filter()、forEach()、map()、some()
(11)归并方法:reduce()和reduceRight()