引用类型一(Object类型、Array类型,Date类型)
引用类型:是一种数据结构,用于将数据和功能组织在一起。
Object类型
1. 第一种创建方法

2. 第二种创建方法(对象字面量表示法),他是一种简写方式

3. 第三种创建方法(可读性差)

一般来说,访问对象属性时使用的都是点表示法,在JS中还可以使用方括号表示法来访问对象的属性。
在使用方括号访问法时,要将访问的属性以字符串的形式放在方括号中。

如果属性名中包含会导致语法错误的字符,或者属性名使用的事关键字或保留字,也可以使用方括号表示法,如下:

Array类型
数组的每一项可以保存任何类型的数据,而且数组的大小可以动态调整,可以随着数据的添加自动增长。
数组的创建方式
方式一:

在使用Array构造函数时,可以省略new操作符

方式二:(数组字面量表示法)
如果索引小于数组的项数,则返回对应项的值。
如果设置某个值的索引超过了数组现有的项数,则数组会自动增加到最后,(数组长度+1)

数组的length属性:
通过length属性,可以从数组末尾移除项

通过length属性,可以从末尾增加项
增加的项,初始值为undefined

利用length属性也可以方便地在数据末尾添加新项:

检测数组
Array.isArray()方法的目的是最终确定某个值到底是不是数组,不管他在哪个全局执行环境中创建的。

栈方法
他是先进后出的数据结构。
从数组末端添加项,从末端移除项。
主要有两个方法push()和pop方法()
push():可以接受任意数量的参数,把他们逐个添加到数组末尾,并返回数组修改的长度
pop():从数组末尾移除最后一项,减少数组长度,返回移除的项


队列方法
他的数据结构是先进先出。
队列在列表的末端添加项,从列表的前端移除项
shift():他能移除数组中的第一项并返回该项,同时数组的长度减一。
与push()搭配,可以实现队列的效果

unshift():他在数组的前端添加任意个项并返回新数组的长度,与pop()搭配,可以实现反方向的队列效果。

重排序方法
reverse():反转数组

从小到大排序,sort()配合比较函数方法

操作方法
concat()

slice()
如何接受的参数时负数,则数组的长度+(-x),-x为当前的负数。
如果结束位置小于起始,则返回空数组

splice()

位置方法
可以设置起点。

迭代方法
ECMAScript5为数组定义了5个迭代方法。每个方法都接收2个参数,要在每一项运行的方法函数和(可选的)运行该函数的作用域对象。传入这些方法中的函数会接收3个参数,数组项的值、该项在数组中的位置和数组对象本身。
every()
和&&有异曲同工之妙。

some()
和||有异曲同工之妙

filter()

map()

forEach()

归并方法
ECMAScript5新增了两个归并数组的方法:reduce()和reduceRight()。这两个方法都会迭代数组的所有项,然后构建一个最终的返回值。
其中,reduce()方法是从数组的第一项开始,逐个遍历到最后,反之,reduceRight()是从数组最后一项开始遍历。
这两个方法都接收两个参数:一个在每一项上调用的函数和(可选的)作为归并基础的初始值。
传给他们的函数接收4个参数:前一个值,当前值,项的索引和数组对象。这个函数返回的任何值都会作为第一个参数自动传给下一项。

Date类型
创建一个日期对象,直接new即可。

在调用Date构造函数而不传递参数的情况下,新创建的对象自动获得当前日期和时间。
ECMAScript提供了两个方法:Date.parse()和Date.UTC()
Date.parse():接收一个表示日期的字符串参数,然后尝试根据这个字符串返回相应时期的毫秒数。
如果传入方法的字符串不能表示日期,则返回NaN。

Date.UTC():同样返回毫秒数

Date.now():返回表示调用这个方法时的日期和毫秒数。
