引用类型是一种数据结构,将数据和功能组织在一起,又被称为类。
1.Object 类型
创建方式:
1.new Object( )
2.var obj = { };访问方式:
1. obj.attr (首选,采用.的方式)
2. obj[attr]: 如果attr是变量
2.Array 类型
特点:数组的项中数据类型可以不一致,数组的长度可以不一致
创建方式:
1.用Array构造数组,Array中可以传入数字(表示长度),可以传入值创建数组
2.用字面量的方式创建数组访问值方式:
使用方括号,并且基于0的数字索引访问长度的方式:
Array.length: 通过设置此项,可以从数组的末尾添加项或者移除项目检测数组:
Array.isArray(array)方式进行监测是否是数组转换方法:
toLocaleString( ) , toString( ) : 表示转String字符串
valueOf( ) : 会返回数组栈方法:
push( ) : 可以接受多个参数,并且插入数组尾端
pop( ): 可以删除尾端的项,并且进行返回队列方法:
shift( ): 可以接受多个参数,并且插入数组前端
unshift( ): 可以删除前端的项,并且进行返回重排序方法:
reverse( ): 反转数组顺序
sort( ): 将数组的项转化为字符串,然后将字符串进行排序,支持传入一个compare函数进行排序,用value2 - value1就好操作方法:
concat(): 创建当前数组的一个副本,然后将参数(数组或者项)一 一 添加到末尾
slice(start, end): 创建start和end之间项的新数组,但是不包括end的项(如果里面有负数,那么值就是数组长度加上此负数)
splice(): 始终返回从数组中删除的项,如果没有删除则返回空数组
删除:(起始位置[0],要删除的项数)
插入:(起始位置[0],要删除的项数 ,要插入的项)
替换: ( 起始位置[0], 要删除的项数 , 要插入的项)位置方法:
indexOf(要查找的项,查找起点的索引 [0] ) 在没有查找到的情况下返回 -1
lastIndexOf(要查找的项,查找起点的索引 [0] ) 在没有查找到的情况下返回 -1迭代方法:
参数说明:
迭代方法( fn:在每一项运行的函数,this:作用域对象)
fn (value:数组项的值,index:该项在数组的位置,array:数组对象本身)
方法:
every( ): 对数组的每一项运行该函数,如果每一个项都返回true,则返回true
filter( ): 对数组的每一项运行该函数,返回该项返回true组成的数组
forEach( ): 对数组每一项运行该函数。没有返回值
map( ): 对数组每一项运行该函数,返回每一次函数调用的结果生成的数组
some( ): 对数组每一项运行该函数,任意一项返回true则返回true缩小方法:
参数说明:
缩小方法(fn:在每一项调用的函数,缩小基础的初始值)
fn(上一个函数返回值,当前值,项的索引,数组对象)
方法:
reduce( ): 最后返回值,是最后一个fn的返回值
reduceRight( ): 最后返回值,是最后一个fn的返回值 , 从最后一项向前进行遍历
3.Date类型:
- Date.parse( ):
参数格式:
月/日/年
月 日,年
星期 月 日 年 时:分:秒 时区 - Date.UTC( ):
参数格式:
年份,基于0的月份[,日,时,分,秒,毫秒] - Date.now( ):
返回当前时间的毫秒 - new Date( s ):
s: 传入的毫秒数 - 继承的方法:
toLocaleString( ): 仅在调试时候有用(没用)
toString( ): 没有什么用(没用)
ValueOf( ): 返回毫秒数(有用) 日期格式化方法:
toDateString( )(没用)
toTimeString( )(没用)
toLocaleDateString( )(没用)
toLocaleTimeString( )(没用)
toUTCString( )(没用)Date类型的方法:
UTC和GMT:地球每天的自转是有些不规则的,而且正在缓慢减速。所以,格林尼治时间(GMT)已经不再被作为标准时间使用。现在的标准时间——协调世界时(UTC)——由原子钟提供
时间戳:
getTime( ): 返回日期毫秒数,和valueOf( )的值一致
年:
getFullYear( ): 返回4位数年
getUTCFullYear( ):返回UTC4位数年
月:
getMonth( ): 返回日期中的月,基于0
getUTCMonth( ): 返回日期中的月,基于0
日:
getDate( ): 得到日期中的日
getUTCDate( ): 得到UTC日其中的日
星期几:
getDay( ):得到日期中星期几
getUTCDay( ):得到UTC日期中的星期几
时:
getHours( ): 得到日期中的小时
getUTCHours( ): 得到UTC的小时
分:
getMinutes( ): 得到日期中的分钟
getUTCMinutes( ): 得到日期中的UTC分钟
秒:
getSeconds( ): 得到日期中的秒
getUTCSeconds( ):得到日期中的UTC秒
毫秒:
getMilliseconds( ):得到日期中的毫秒
getUTCMilliseconds( ):得到UTC日期中的毫秒
4.RegExp类型
var expression = / pattern / flags;
实例属性:
1.global:布尔值,表示是否设置了g
2.ignoreCase:布尔值,表示是否设置了i
3.lastIndex:整数,表示修改下一个匹配项的字符位置,从0算起
4.multiline :布尔值,表示是否设置了m标识
5.source : 字符串表达式的字面量显示实例方法:
.test( ):如果符合正则返回true,否则返回false
.exec( ): 返回一个匹配项信息的数组array,否则返回null
array:
input: 此项是输入的正则表达式
index: 此项是匹配的索引
5.Function类型
函数是对象,函数名是指针
a.没有重载(深入理解):
原因:函数名是指针,所以同名函数实际上会在创建第二个函数的时候进行覆盖b.函数声明和函数表达式区别:
解析器会率先读取函数声明,并且在在执行任何代码之前进行访问;至于函数表达式,则会等到解析器执行到所在代码行,才能被解析。c.作为值的函数:
由于函数名本来就是一个变量,所以可以当作一个参数使用,也可以当做一个另一个函数的返回结果。d.函数的内部属性:
1. arguments:类数组对象,包括传入的所有参数
2. arguments.callee:指针,指向拥有这个arguments对象的函数(如果函数内部调用,使用arguments.callee,不使用函数名是为了防止更换函数名后导致的调用失败)(严格模式报错)
3. arguments.callee.caller: 这个函数被哪个函数进行了调用
this: 函数执行的环境对象e.函数属性和方法:
1. 属性:
- length: 函数希望接受的命名参数的个数
- prototype: 保存所有引用类型的实例方法真正所在,而且是不可以枚举的。
2. 方法:
- apply(一个是运行函数作用域,一个是参数数组/arguments ): 在特定作用域中调用函数
- call(一个是运行函数作用域,参数,参数,参数 ): 在特定作用域中调用函数
- ??bind(this): 创建一个this的实例,然后绑定到传给bind( )函数的值。f.基本包装类型:(1. Boolean 2.Number 3.String)
1. 用处:每读取一个基本类型值,后台创建一个对应的的基本包装类型的对象,从而让我们能够调用一些方法类操作这些数据
2. 引用类型和基本包装类型的区别:
引用类型在执行流离开当前作用域之前就一直保存在内存里,而自动创建的基本包装类型对象,就在代码执行的一瞬间,被立即销毁。??所以我们无法为基本类型添加属性和方法。3. Boolean类型:(不建议使用) 4. Number类型:(不建议使用)