引用类型是一种数据结构,用于将数据结构和功能组织在一起,也被称之为类。(但一般不这么叫)
5.1 Object 类型
创建Object 类型:
1、var o = new Object()
o.name =
o.age =
2、 var person ={
name: ,
age :
}
5.2 Array 类型 typeof - 也是 object instanceof Array - true
js Array与其他语言不通:js的Array可以保存任何类型的数据。[1,"2",{},true]
转换方法:
![](https://i-blog.csdnimg.cn/blog_migrate/b89707c1d6d5aa125b9975f7ecca86a2.png)
push()
pop() 长度会-1
shift() 长度会-1
unshift()
sort() 方法
取部分 slice(start) slice(start,end)
插入 spice(start,delete_length,insertdata,insertdata,insertdata....);
删除 spice(start,length)
![](https://i-blog.csdnimg.cn/blog_migrate/7d6749d4775736666a4a021c4cb45b50.png)
![](https://i-blog.csdnimg.cn/blog_migrate/90f464c4d54c87fa9a3c7734419064dd.png)
5.3 Date 类型 typeof - 也是 object instanceof Date - true
ECMAScript 提供了两个日期方法:Date.parse() Date.UTC()
![](https://i-blog.csdnimg.cn/blog_migrate/85741d93f4b6a47a94846bf733f76f64.png)
![](https://i-blog.csdnimg.cn/blog_migrate/b278457311e38172fef402e25ef846ed.png)
![](https://i-blog.csdnimg.cn/blog_migrate/2c49b0742e928488facc30f9912a828c.png)
RegExp 类型
var expression = /pattern/flags
flags-[g,i,m]
g- 全局模式
i-不区分大小写
m-表示多行,会检查下一行。
RegExp实例属性
global-是否设置了g标识
ignoreCase-是否设置了i标识
lastIndex-开始搜索下一个匹配项的字符为止,从0算起
multiline-是否设置了m标识
source-正则表达式的字符串表示。
RegExp 实例方法
RegExp对象的主要方法是exec(),该方法是专门为捕获组而设计的,exec()接受一个参数,即要应用模式的字符串,然后返回包含第一个匹配项信息的数组,或者没有匹配项则返回null;
返回的数组是Array的实例,但是包含两个额外的属性:index和input. 其中index表示匹配项在字符串中的位置,而input表示应用正则表达式的字符串。
第二个方法:
test()-接受一个字符串参数,在模式与该参数匹配的情况下返回true,否则返回false。如下:
![](https://i-blog.csdnimg.cn/blog_migrate/14c942329b158666be32b0fa53a7fd99.png)
5.5 Function 类型
5.5.1 函数重载问题
5.5.2 函数声明与函数表达式
5.5.3 作为值得函数
![](https://i-blog.csdnimg.cn/blog_migrate/3bf4a517115b22dfd76ef40c66fab4be.png)
函数内部属性
在函数内部有两个特殊的对象:arguments 和 this。
arguments的主要用途是保存函数参数,但该对象还有一个名叫callee的属性,只想拥有这个arguments对象的函数;
![](https://i-blog.csdnimg.cn/blog_migrate/340a6d860854561db2d054c238f60d9c.png)
this - 引用的是函数据以执行操作的对象,或者this是函数在执行时所处的作用域
![](https://i-blog.csdnimg.cn/blog_migrate/5678253d6e5c9ca8789a56f35033e860.png)
函数属性和方法:length 和prototype| call apply
length 是表示函数希望接受的参数个数
![](https://i-blog.csdnimg.cn/blog_migrate/5b495581ff54bcab6bad8a97c5261144.png)
prototype 是保存所有实例方法的真正所在。
每个函数都包含两个非集成而来的方法:call 和 apply。
这两个方法的用途都是在特定的作用域中调用函数,实际上等于设置函数体内this对象的值。
apply () 方法接受两个参数:一个是在其中运行函数的作用域,第二个是Array的实例,也可以是arguments对象
call () 方法参数:第一个参数是作用域,第x个:要全部列出来。
真正强大之处是能够改变作用域:
![](https://i-blog.csdnimg.cn/blog_migrate/affd92a0d35e6716bc955e7cac7333bc.png)