对象 (Object)
创建Object实例的方式有两种:
- 使用new操作符后跟Object构造函数
var person = new Object();
person.name = "Nick";
person.age = 18;
- 使用对象字面量表示法, 代码量少,但是在使用对象字面量的时候实际上不会调用Object的构造函数
常用
var person = {
name : "Nick",
age : 18
};
访问对象属性的两种方法
- 点表示法
常用
对象名.属性
person.name
- 方括号表示法,可以通过变量来访问属性
对象名[“属性”]
person["name"]
数组 (Array)
- 数组的每一项可以保存任何类型的数据
- 数组的大小是可以动态调整的
创建数组的基本方式有两种
- Array构造函数
var testArray = new Array();
var testArray = new Array("read", "write");
- 数组字面量表示法,不会调用Array构造函数
var testArray = ["read", "write"];
var testArray2 = [1,2];
数组的各种方法
A. 数组的栈方法
- 栈: 是一种LIFO(Last-In-First-Out,后进先出)的数据结构,也就是最新添加的项最早被移除。而栈中项的插入(叫做推入)和移除(叫做弹出),只发生在一个位置——栈的顶部
- push() -- 插入:可以接收任意数量的参数,把它们逐个添加到数组末尾,并返回修改后数组的长度
- pop() -- 移除: 从数组末尾移除最后一项,减少数组的length值,然后返回移除的项
B. 数组的栈方法
- 队: 是一种FIFO(First-In-First-Out,先进先出)的数据结构,也就是最早添加的项最先被移除。队列在列表的末端添加项,从列表的前端移除项
- unshift():它能在数组前端添加任意个项并返回新数组的长度
- shift(): 移除数组中的第一个项并返回该项,同时将数组长度减1
C. 数组的排序方法
- reverse(): 反转数组项的顺序,其返回值是经过排序之后的数组
- sort(): 按升序排列数组项,最小的值位于最前面,最大的值排在最后面。 使用toString()转型方法,将数组的所有项转换成字符串进行比较,然后排序。其返回值是经过排序之后的数组
var colors = ["red", "blue", "yellow", "white"];
colors1 = colors.reverse();
alert(colors1); //"white", "yellow", "blue", "red"
colors2 = colors.sort();
alert(colors2); //"blue", "red", "white", "yellow"
D. 数组的操作方法
- concat(): 基于当前数组中的所有项创建一个副本,然后将接收到的参数添加到这个副本的末尾,最后返回新构建的数组
- slice(): 可以接受一或两个参数,即要返回项的起始和结束位置。在只有一个参数的情况下,slice()方法返回从该参数指定位置开始到当前数组末尾的所有项。如果有两个参数,该方法返回起始和结束位置之间的项——但不包括结束位置的项。注意,slice()方法不会影响原始数组
- splice(): 主要用途是向数组的中部插入项。 包含三个参数: 参数1: 要操作的其实位置; 参数2:要删除的项数;参数3:要添加的数组项;且返回的是删除的数组的项
var colors = ["red", "blue", "yellow", "white"];
colors3 = colors.concat("brown", ["gray", "black"]);
alert(colors3); //"red", "blue", "yellow", "white", "brown", "gray", "black"
colors4 = colors.slice(1, 3);
alert(colors4); //"blue", "yellow"
colors5 = colors.slice(2);
alert(colors5); //"yellow", "white"
colors6 = colors.splice(1,2); //从数组下标为1的项开始,删除两项
alert(colors1); //"red", "white" //colors数组也被改变了
alert(colors6); //"blue", "yellow"
colors7 = colors.splice(1,0, "gray", "black"); //从数组下标为1的项开始,之后添加两项
alert(colors); //"red", "white", "gray", "black"
alert(colors7); //[] 空数组,因为没有删除任何项
colors8= colors.splice(1,1, "orange", "purple"); //从数组下标为1的项开始,删除一项,并且添加两项
alert(colors); //"red", "white", "orange", "purple", "black"
alert(colors7); //"gray" 删除了一项
E. 数组的位置方法
- indexOf(): 接收两个参数(要查找的项,(可选的)查找起点位置的索引),从数组的开头开始向后查找,返回找到的第一个对应项的索引
- lastIndexOf(): 接收两个参数:要查找的项和(可选的)表示查找起点位置的索引。从数组的末尾开始向前查找,返回找到的第一个对应项的索引
F. 数组的迭代方法
- every():对数组中的每一项运行给定函数,如果该函数对每一项都返回true,则返回true
- some():对数组中的每一项运行给定函数,如果该函数对任一项返回true,则返回true
- filter():对数组中的每一项运行给定函数,返回该函数会返回true的项组成的数组
- forEach():对数组中的每一项运行给定函数。这个方法没有返回值
- map():对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组
var numbers = [1,2,3,4,5,4,3,2,1]
var everyResults = numbers.every(function(item, index, array){
return (item>2);
});
alert(everyResults); //false. 不是所有的Item都大于2
var someResults = numbers.every(function(item, index, array){
return (item>2);
});
alert(someResults); // true, 有大于2的item
var filterResults = numbers.every(function(item, index, array){
return (item>2);
});
alert(filterResults); //[3,4,5,4,3] 返回大于2的Item
var mapResults = numbers.every(function(item, index, array){
return (item*2);
});
alert(mapResults); //[2,4,6,8,10,8,6,4,2] 返回乘以2以后的数组
网友评论